NATS C Client with Streaming support  2.5.1
The nats.io C Client, Supported by Synadia Communications Inc.
nats.h File Reference
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <inttypes.h>
#include <stdio.h>
#include "status.h"
#include "version.h"

Go to the source code of this file.

Macros

#define NATS_EXTERN
 Needed for shared library. More...
 
#define NATS_DEFAULT_URL   "nats://localhost:4222"
 The default NATS Server URL. More...
 

Typedefs

typedef int natsSock
 
typedef struct __natsConnection natsConnection
 A connection to a NATS Server. More...
 
typedef struct __natsStatistics natsStatistics
 Statistics of a natsConnection. More...
 
typedef struct __natsSubscription natsSubscription
 Interest on a given subject. More...
 
typedef struct __natsMsg natsMsg
 A structure holding a subject, optional reply and payload. More...
 
typedef struct __natsOptions natsOptions
 Way to configure a natsConnection. More...
 
typedef char natsInbox
 Unique subject often used for point-to-point communication. More...
 
typedef struct __stanConnection stanConnection
 A connection to a NATS Streaming Server. More...
 
typedef struct __stanSubscription stanSubscription
 Interest on a given channel. More...
 
typedef struct __stanMsg stanMsg
 The Streaming message. More...
 
typedef struct __stanConnOptions stanConnOptions
 Way to configure a stanConnection. More...
 
typedef struct __stanSubOptions stanSubOptions
 Way to configure a stanSubscription. More...
 
typedef void(* natsMsgHandler) (natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure)
 Callback used to deliver messages to the application. More...
 
typedef void(* natsConnectionHandler) (natsConnection *nc, void *closure)
 Callback used to notify the user of asynchronous connection events. More...
 
typedef void(* natsErrHandler) (natsConnection *nc, natsSubscription *subscription, natsStatus err, void *closure)
 Callback used to notify the user of errors encountered while processing inbound messages. More...
 
typedef natsStatus(* natsEvLoop_Attach) (void **userData, void *loop, natsConnection *nc, natsSock socket)
 Attach this connection to the external event loop. More...
 
typedef natsStatus(* natsEvLoop_ReadAddRemove) (void *userData, bool add)
 Read event needs to be added or removed. More...
 
typedef natsStatus(* natsEvLoop_WriteAddRemove) (void *userData, bool add)
 Write event needs to be added or removed. More...
 
typedef natsStatus(* natsEvLoop_Detach) (void *userData)
 Detach from the event loop. More...
 
typedef natsStatus(* natsUserJWTHandler) (char **userJWT, char **customErrTxt, void *closure)
 Callback used to fetch and return account signed user JWT. More...
 
typedef natsStatus(* natsSignatureHandler) (char **customErrTxt, unsigned char **signature, int *signatureLength, const char *nonce, void *closure)
 Callback used to sign a nonce sent by the server. More...
 
typedef const char *(* natsTokenHandler) (void *closure)
 Callback used to build a token on connections and reconnections. More...
 
typedef void(* natsOnCompleteCB) (void *closure)
 Callback used to notify that an object lifecycle is complete. More...
 
typedef int64_t(* natsCustomReconnectDelayHandler) (natsConnection *nc, int attempts, void *closure)
 Callback used to specify how long to wait between reconnects. More...
 
typedef void(* stanPubAckHandler) (const char *guid, const char *error, void *closure)
 Callback used to notify of an asynchronous publish result. More...
 
typedef void(* stanMsgHandler) (stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure)
 Callback used to deliver messages to the application. More...
 
typedef void(* stanConnectionLostHandler) (stanConnection *sc, const char *errorTxt, void *closure)
 Callback used to notify the user of the permanent loss of the connection. More...
 

Functions

NATS_EXTERN natsStatus nats_Open (int64_t lockSpinCount)
 Initializes the library. More...
 
NATS_EXTERN const char * nats_GetVersion (void)
 Returns the Library's version. More...
 
NATS_EXTERN uint32_t nats_GetVersionNumber (void)
 Returns the Library's version as a number. More...
 
NATS_EXTERN bool nats_CheckCompatibility (void)
 Check that the header is compatible with the library. More...
 
NATS_EXTERN int64_t nats_Now (void)
 Gives the current time in milliseconds. More...
 
NATS_EXTERN int64_t nats_NowInNanoSeconds (void)
 Gives the current time in nanoseconds. More...
 
NATS_EXTERN void nats_Sleep (int64_t sleepTime)
 Sleeps for a given number of milliseconds. More...
 
NATS_EXTERN const char * nats_GetLastError (natsStatus *status)
 Returns the calling thread's last known error. More...
 
NATS_EXTERN natsStatus nats_GetLastErrorStack (char *buffer, size_t bufLen)
 Returns the calling thread's last known error stack. More...
 
NATS_EXTERN void nats_PrintLastErrorStack (FILE *file)
 Prints the calling thread's last known error stack into the file. More...
 
NATS_EXTERN natsStatus nats_SetMessageDeliveryPoolSize (int max)
 Sets the maximum size of the global message delivery thread pool. More...
 
NATS_EXTERN void nats_ReleaseThreadMemory (void)
 Release thread-local memory possibly allocated by the library. More...
 
NATS_EXTERN natsStatus nats_Sign (const char *encodedSeed, const char *input, unsigned char **signature, int *signatureLength)
 Signs a given text using the provided private key. More...
 
NATS_EXTERN void nats_Close (void)
 Tear down the library. More...
 
NATS_EXTERN natsStatus nats_CloseAndWait (int64_t timeout)
 Tear down the library and wait for all resources to be released. More...
 
NATS_EXTERN const char * natsStatus_GetText (natsStatus s)
 Get the text corresponding to a natsStatus. More...
 
NATS_EXTERN natsStatus natsStatistics_Create (natsStatistics **newStats)
 Creates a natsStatistics object. More...
 
NATS_EXTERN natsStatus natsStatistics_GetCounts (const natsStatistics *stats, uint64_t *inMsgs, uint64_t *inBytes, uint64_t *outMsgs, uint64_t *outBytes, uint64_t *reconnects)
 Extracts the various statistics values. More...
 
NATS_EXTERN void natsStatistics_Destroy (natsStatistics *stats)
 Destroys the natsStatistics object. More...
 
NATS_EXTERN natsStatus natsOptions_Create (natsOptions **newOpts)
 Creates a natsOptions object. More...
 
NATS_EXTERN natsStatus natsOptions_SetURL (natsOptions *opts, const char *url)
 Sets the URL to connect to. More...
 
NATS_EXTERN natsStatus natsOptions_SetServers (natsOptions *opts, const char **servers, int serversCount)
 Set the list of servers to try to (re)connect to. More...
 
NATS_EXTERN natsStatus natsOptions_SetUserInfo (natsOptions *opts, const char *user, const char *password)
 Sets the user name/password to use when not specified in the URL. More...
 
NATS_EXTERN natsStatus natsOptions_SetToken (natsOptions *opts, const char *token)
 Sets the token to use when not specified in the URL. More...
 
NATS_EXTERN natsStatus natsOptions_SetTokenHandler (natsOptions *opts, natsTokenHandler tokenCb, void *closure)
 Sets the tokenCb to use whenever a token is needed. More...
 
NATS_EXTERN natsStatus natsOptions_SetNoRandomize (natsOptions *opts, bool noRandomize)
 Indicate if the servers list should be randomized. More...
 
NATS_EXTERN natsStatus natsOptions_SetTimeout (natsOptions *opts, int64_t timeout)
 Sets the (re)connect process timeout. More...
 
NATS_EXTERN natsStatus natsOptions_SetName (natsOptions *opts, const char *name)
 Sets the name. More...
 
NATS_EXTERN natsStatus natsOptions_SetSecure (natsOptions *opts, bool secure)
 Sets the secure mode. More...
 
NATS_EXTERN natsStatus natsOptions_LoadCATrustedCertificates (natsOptions *opts, const char *fileName)
 Loads the trusted CA certificates from a file. More...
 
NATS_EXTERN natsStatus natsOptions_SetCATrustedCertificates (natsOptions *opts, const char *certificates)
 Sets the trusted CA certificates from memory. More...
 
NATS_EXTERN natsStatus natsOptions_LoadCertificatesChain (natsOptions *opts, const char *certsFileName, const char *keyFileName)
 Loads the certificate chain from a file, using the given key. More...
 
NATS_EXTERN natsStatus natsOptions_SetCertificatesChain (natsOptions *opts, const char *cert, const char *key)
 Sets the client certificate and key. More...
 
NATS_EXTERN natsStatus natsOptions_SetCiphers (natsOptions *opts, const char *ciphers)
 Sets the list of available ciphers. More...
 
NATS_EXTERN natsStatus natsOptions_SetCipherSuites (natsOptions *opts, const char *ciphers)
 Sets the list of available ciphers for TLSv1.3. More...
 
NATS_EXTERN natsStatus natsOptions_SetExpectedHostname (natsOptions *opts, const char *hostname)
 Sets the server certificate's expected hostname. More...
 
NATS_EXTERN natsStatus natsOptions_SkipServerVerification (natsOptions *opts, bool skip)
 Switch server certificate verification. More...
 
NATS_EXTERN natsStatus natsOptions_SetVerbose (natsOptions *opts, bool verbose)
 Sets the verbose mode. More...
 
NATS_EXTERN natsStatus natsOptions_SetPedantic (natsOptions *opts, bool pedantic)
 Sets the pedantic mode. More...
 
NATS_EXTERN natsStatus natsOptions_SetPingInterval (natsOptions *opts, int64_t interval)
 Sets the ping interval. More...
 
NATS_EXTERN natsStatus natsOptions_SetMaxPingsOut (natsOptions *opts, int maxPingsOut)
 Sets the limit of outstanding PINGs without corresponding PONGs. More...
 
NATS_EXTERN natsStatus natsOptions_SetIOBufSize (natsOptions *opts, int ioBufSize)
 Sets the size of the internal read/write buffers. More...
 
NATS_EXTERN natsStatus natsOptions_SetAllowReconnect (natsOptions *opts, bool allow)
 Indicates if the connection will be allowed to reconnect. More...
 
NATS_EXTERN natsStatus natsOptions_SetMaxReconnect (natsOptions *opts, int maxReconnect)
 Sets the maximum number of reconnect attempts. More...
 
NATS_EXTERN natsStatus natsOptions_SetReconnectWait (natsOptions *opts, int64_t reconnectWait)
 Sets the time between reconnect attempts. More...
 
NATS_EXTERN natsStatus natsOptions_SetReconnectJitter (natsOptions *opts, int64_t jitter, int64_t jitterTLS)
 Set the upper bound of a random delay added to reconnect wait. More...
 
NATS_EXTERN natsStatus natsOptions_SetCustomReconnectDelay (natsOptions *opts, natsCustomReconnectDelayHandler cb, void *closure)
 Sets the handler to invoke when the library needs to wait before the next reconnect attempts. More...
 
NATS_EXTERN natsStatus natsOptions_SetReconnectBufSize (natsOptions *opts, int reconnectBufSize)
 Sets the size of the backing buffer used during reconnect. More...
 
NATS_EXTERN natsStatus natsOptions_SetMaxPendingMsgs (natsOptions *opts, int maxPending)
 Sets the maximum number of pending messages per subscription. More...
 
NATS_EXTERN natsStatus natsOptions_SetErrorHandler (natsOptions *opts, natsErrHandler errHandler, void *closure)
 Sets the error handler for asynchronous events. More...
 
NATS_EXTERN natsStatus natsOptions_SetClosedCB (natsOptions *opts, natsConnectionHandler closedCb, void *closure)
 Sets the callback to be invoked when a connection to a server is permanently lost. More...
 
NATS_EXTERN natsStatus natsOptions_SetDisconnectedCB (natsOptions *opts, natsConnectionHandler disconnectedCb, void *closure)
 Sets the callback to be invoked when the connection to a server is lost. More...
 
NATS_EXTERN natsStatus natsOptions_SetReconnectedCB (natsOptions *opts, natsConnectionHandler reconnectedCb, void *closure)
 Sets the callback to be invoked when the connection has reconnected. More...
 
NATS_EXTERN natsStatus natsOptions_SetDiscoveredServersCB (natsOptions *opts, natsConnectionHandler discoveredServersCb, void *closure)
 Sets the callback to be invoked when new servers are discovered. More...
 
NATS_EXTERN natsStatus natsOptions_SetLameDuckModeCB (natsOptions *opts, natsConnectionHandler lameDuckCb, void *closure)
 Sets the callback to be invoked when server enters lame duck mode. More...
 
NATS_EXTERN natsStatus natsOptions_SetEventLoop (natsOptions *opts, void *loop, natsEvLoop_Attach attachCb, natsEvLoop_ReadAddRemove readCb, natsEvLoop_WriteAddRemove writeCb, natsEvLoop_Detach detachCb)
 Sets the external event loop and associated callbacks. More...
 
NATS_EXTERN natsStatus natsOptions_UseGlobalMessageDelivery (natsOptions *opts, bool global)
 Switch on/off the use of a central message delivery thread pool. More...
 
NATS_EXTERN natsStatus natsOptions_IPResolutionOrder (natsOptions *opts, int order)
 Dictates the order in which host name are resolved during connect. More...
 
NATS_EXTERN natsStatus natsOptions_SetSendAsap (natsOptions *opts, bool sendAsap)
 Sets if Publish calls should send data right away. More...
 
NATS_EXTERN natsStatus natsOptions_UseOldRequestStyle (natsOptions *opts, bool useOldStyle)
 Switches the use of old style requests. More...
 
NATS_EXTERN natsStatus natsOptions_SetFailRequestsOnDisconnect (natsOptions *opts, bool failRequests)
 Fails pending requests on disconnect event. More...
 
NATS_EXTERN natsStatus natsOptions_SetNoEcho (natsOptions *opts, bool noEcho)
 Sets if connection receives its own messages. More...
 
NATS_EXTERN natsStatus natsOptions_SetRetryOnFailedConnect (natsOptions *opts, bool retry, natsConnectionHandler connectedCb, void *closure)
 Indicates if initial connect failure should be retried or not. More...
 
NATS_EXTERN natsStatus natsOptions_SetUserCredentialsCallbacks (natsOptions *opts, natsUserJWTHandler ujwtCB, void *ujwtClosure, natsSignatureHandler sigCB, void *sigClosure)
 Sets the callbacks to fetch user JWT and sign server's nonce. More...
 
NATS_EXTERN natsStatus natsOptions_SetUserCredentialsFromFiles (natsOptions *opts, const char *userOrChainedFile, const char *seedFile)
 Sets the file(s) to use to fetch user JWT and seed required to sign nonce. More...
 
NATS_EXTERN natsStatus natsOptions_SetNKey (natsOptions *opts, const char *pubKey, natsSignatureHandler sigCB, void *sigClosure)
 Sets the NKey public key and signature callback. More...
 
NATS_EXTERN natsStatus natsOptions_SetNKeyFromSeed (natsOptions *opts, const char *pubKey, const char *seedFile)
 Sets the NKey public key and its seed file. More...
 
NATS_EXTERN natsStatus natsOptions_SetWriteDeadline (natsOptions *opts, int64_t deadline)
 Sets the write deadline. More...
 
NATS_EXTERN natsStatus natsOptions_DisableNoResponders (natsOptions *opts, bool disabled)
 Enable/Disable the "no responders" feature. More...
 
NATS_EXTERN void natsOptions_Destroy (natsOptions *opts)
 Destroys a natsOptions object. More...
 
NATS_EXTERN natsStatus stanConnOptions_Create (stanConnOptions **newOpts)
 Creates a stanConnOptions object. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetURL (stanConnOptions *opts, const char *url)
 Sets the URL to connect to. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetNATSOptions (stanConnOptions *opts, natsOptions *nOpts)
 Sets the NATS Options to use to create the connection. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetConnectionWait (stanConnOptions *opts, int64_t wait)
 Sets the timeout for establishing a connection. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetPubAckWait (stanConnOptions *opts, int64_t wait)
 Sets the timeout for waiting for an ACK for a published message. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetDiscoveryPrefix (stanConnOptions *opts, const char *prefix)
 Sets the subject prefix the library sends the connect request to. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetMaxPubAcksInflight (stanConnOptions *opts, int maxPubAcksInflight, float percentage)
 Sets the maximum number of published messages without outstanding ACKs from the server. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetPings (stanConnOptions *opts, int interval, int maxOut)
 Sets the ping interval and max out values. More...
 
NATS_EXTERN natsStatus stanConnOptions_SetConnectionLostHandler (stanConnOptions *opts, stanConnectionLostHandler handler, void *closure)
 Sets the connection lost handler. More...
 
NATS_EXTERN void stanConnOptions_Destroy (stanConnOptions *opts)
 Destroys a stanConnOptions object. More...
 
NATS_EXTERN natsStatus stanSubOptions_Create (stanSubOptions **newOpts)
 Creates a stanSubOptions object. More...
 
NATS_EXTERN natsStatus stanSubOptions_SetDurableName (stanSubOptions *opts, const char *durableName)
 Sets the Durable Name for this subscription. More...
 
NATS_EXTERN natsStatus stanSubOptions_SetAckWait (stanSubOptions *opts, int64_t wait)
 Sets the timeout for waiting for an ACK from the cluster's point of view for delivered messages. More...
 
NATS_EXTERN natsStatus stanSubOptions_SetMaxInflight (stanSubOptions *opts, int maxInflight)
 Sets the the maximum number of messages the cluster will send without an ACK. More...
 
NATS_EXTERN natsStatus stanSubOptions_StartAtSequence (stanSubOptions *opts, uint64_t seq)
 Sets the desired start position based on the given sequence number. More...
 
NATS_EXTERN natsStatus stanSubOptions_StartAtTime (stanSubOptions *opts, int64_t time)
 Sets the desired start position based on the given time. More...
 
NATS_EXTERN natsStatus stanSubOptions_StartAtTimeDelta (stanSubOptions *opts, int64_t delta)
 Sets the desired start position based on the given delta. More...
 
NATS_EXTERN natsStatus stanSubOptions_StartWithLastReceived (stanSubOptions *opts)
 The subscription should start with the last message in the channel. More...
 
NATS_EXTERN natsStatus stanSubOptions_DeliverAllAvailable (stanSubOptions *opts)
 The subscription should start with the first message in the channel. More...
 
NATS_EXTERN natsStatus stanSubOptions_SetManualAckMode (stanSubOptions *opts, bool manual)
 Sets the subscription's acknowledgment mode. More...
 
NATS_EXTERN void stanSubOptions_Destroy (stanSubOptions *opts)
 Destroys a stanSubOptions object. More...
 
NATS_EXTERN natsStatus natsInbox_Create (natsInbox **newInbox)
 Creates an inbox. More...
 
NATS_EXTERN void natsInbox_Destroy (natsInbox *inbox)
 Destroys the inbox. More...
 
NATS_EXTERN natsStatus natsMsg_Create (natsMsg **newMsg, const char *subj, const char *reply, const char *data, int dataLen)
 Creates a natsMsg object. More...
 
NATS_EXTERN const char * natsMsg_GetSubject (const natsMsg *msg)
 Returns the subject set in this message. More...
 
NATS_EXTERN const char * natsMsg_GetReply (const natsMsg *msg)
 Returns the reply set in this message. More...
 
NATS_EXTERN const char * natsMsg_GetData (const natsMsg *msg)
 Returns the message payload. More...
 
NATS_EXTERN int natsMsg_GetDataLength (const natsMsg *msg)
 Returns the message length. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Set (natsMsg *msg, const char *key, const char *value)
 Set the header entries associated with key to the single element value. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Add (natsMsg *msg, const char *key, const char *value)
 Add value to the header associated with key. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Get (natsMsg *msg, const char *key, const char **value)
 Get the header entry associated with key. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Values (natsMsg *msg, const char *key, const char ***values, int *count)
 Get all header values associated with key. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Keys (natsMsg *msg, const char ***keys, int *count)
 Get all header keys. More...
 
NATS_EXTERN natsStatus natsMsgHeader_Delete (natsMsg *msg, const char *key)
 Delete the value(s) associated with key. More...
 
NATS_EXTERN bool natsMsg_IsNoResponders (natsMsg *msg)
 Indicates if this message is a "no responders" message from the server. More...
 
NATS_EXTERN void natsMsg_Destroy (natsMsg *msg)
 Destroys the message object. More...
 
NATS_EXTERN uint64_t stanMsg_GetSequence (const stanMsg *msg)
 Returns the message's sequence number. More...
 
NATS_EXTERN int64_t stanMsg_GetTimestamp (const stanMsg *msg)
 Returns the message's timestamp. More...
 
NATS_EXTERN bool stanMsg_IsRedelivered (const stanMsg *msg)
 Returns the message's redelivered flag. More...
 
NATS_EXTERN const char * stanMsg_GetData (const stanMsg *msg)
 Returns the message payload. More...
 
NATS_EXTERN int stanMsg_GetDataLength (const stanMsg *msg)
 Returns the message length. More...
 
NATS_EXTERN void stanMsg_Destroy (stanMsg *msg)
 Destroys the message object. More...
 
NATS_EXTERN natsStatus natsConnection_Connect (natsConnection **nc, natsOptions *options)
 Connects to a NATS Server using the provided options. More...
 
NATS_EXTERN void natsConnection_ProcessReadEvent (natsConnection *nc)
 Process a read event when using external event loop. More...
 
NATS_EXTERN void natsConnection_ProcessWriteEvent (natsConnection *nc)
 Process a write event when using external event loop. More...
 
NATS_EXTERN natsStatus natsConnection_ConnectTo (natsConnection **nc, const char *urls)
 Connects to a NATS Server using any of the URL from the given list. More...
 
NATS_EXTERN bool natsConnection_IsClosed (natsConnection *nc)
 Test if connection has been closed. More...
 
NATS_EXTERN bool natsConnection_IsReconnecting (natsConnection *nc)
 Test if connection is reconnecting. More...
 
bool natsConnection_IsDraining (natsConnection *nc)
 Test if connection is draining. More...
 
NATS_EXTERN natsConnStatus natsConnection_Status (natsConnection *nc)
 Returns the current state of the connection. More...
 
NATS_EXTERN int natsConnection_Buffered (natsConnection *nc)
 Returns the number of bytes to be sent to the server. More...
 
NATS_EXTERN natsStatus natsConnection_Flush (natsConnection *nc)
 Flushes the connection. More...
 
NATS_EXTERN natsStatus natsConnection_FlushTimeout (natsConnection *nc, int64_t timeout)
 Flushes the connection with a given timeout. More...
 
NATS_EXTERN int64_t natsConnection_GetMaxPayload (natsConnection *nc)
 Returns the maximum message payload. More...
 
NATS_EXTERN natsStatus natsConnection_GetStats (natsConnection *nc, natsStatistics *stats)
 Gets the connection statistics. More...
 
NATS_EXTERN natsStatus natsConnection_GetConnectedUrl (natsConnection *nc, char *buffer, size_t bufferSize)
 Gets the URL of the currently connected server. More...
 
NATS_EXTERN natsStatus natsConnection_GetConnectedServerId (natsConnection *nc, char *buffer, size_t bufferSize)
 Gets the server Id. More...
 
NATS_EXTERN natsStatus natsConnection_GetServers (natsConnection *nc, char ***servers, int *count)
 Returns the list of server URLs known to this connection. More...
 
NATS_EXTERN natsStatus natsConnection_GetDiscoveredServers (natsConnection *nc, char ***servers, int *count)
 Returns the list of discovered server URLs. More...
 
NATS_EXTERN natsStatus natsConnection_GetLastError (natsConnection *nc, const char **lastError)
 Gets the last connection error. More...
 
NATS_EXTERN natsStatus natsConnection_GetClientID (natsConnection *nc, uint64_t *cid)
 Gets the current client ID assigned by the server. More...
 
NATS_EXTERN natsStatus natsConnection_Drain (natsConnection *nc)
 Drains the connection with default timeout. More...
 
NATS_EXTERN natsStatus natsConnection_DrainTimeout (natsConnection *nc, int64_t timeout)
 Drains the connection with given timeout. More...
 
NATS_EXTERN natsStatus natsConnection_Sign (natsConnection *nc, const unsigned char *message, int messageLen, unsigned char sig[64])
 Signs any 'message' using the connection's user credentials. More...
 
NATS_EXTERN natsStatus natsConnection_GetClientIP (natsConnection *nc, char **ip)
 Returns the client's IP address as reported by the server. More...
 
NATS_EXTERN natsStatus natsConnection_GetRTT (natsConnection *nc, int64_t *rtt)
 Returns the round trip time between this client and the server. More...
 
NATS_EXTERN natsStatus natsConnection_HasHeaderSupport (natsConnection *nc)
 Returns if the connection to current server supports headers. More...
 
natsStatus natsConnection_GetLocalIPAndPort (natsConnection *nc, char **ip, int *port)
 Returns the connection local IP and port. More...
 
NATS_EXTERN void natsConnection_Close (natsConnection *nc)
 Closes the connection. More...
 
NATS_EXTERN void natsConnection_Destroy (natsConnection *nc)
 Destroys the connection object. More...
 
NATS_EXTERN natsStatus natsConnection_Publish (natsConnection *nc, const char *subj, const void *data, int dataLen)
 Publishes data on a subject. More...
 
NATS_EXTERN natsStatus natsConnection_PublishString (natsConnection *nc, const char *subj, const char *str)
 Publishes a string on a subject. More...
 
NATS_EXTERN natsStatus natsConnection_PublishMsg (natsConnection *nc, natsMsg *msg)
 Publishes a message on a subject. More...
 
NATS_EXTERN natsStatus natsConnection_PublishRequest (natsConnection *nc, const char *subj, const char *reply, const void *data, int dataLen)
 Publishes data on a subject expecting replies on the given reply. More...
 
NATS_EXTERN natsStatus natsConnection_PublishRequestString (natsConnection *nc, const char *subj, const char *reply, const char *str)
 Publishes a string on a subject expecting replies on the given reply. More...
 
NATS_EXTERN natsStatus natsConnection_Request (natsMsg **replyMsg, natsConnection *nc, const char *subj, const void *data, int dataLen, int64_t timeout)
 Sends a request and waits for a reply. More...
 
NATS_EXTERN natsStatus natsConnection_RequestString (natsMsg **replyMsg, natsConnection *nc, const char *subj, const char *str, int64_t timeout)
 Sends a request (as a string) and waits for a reply. More...
 
NATS_EXTERN natsStatus natsConnection_RequestMsg (natsMsg **replyMsg, natsConnection *nc, natsMsg *requestMsg, int64_t timeout)
 Sends a request based on the given requestMsg and waits for a reply. More...
 
NATS_EXTERN natsStatus natsConnection_Subscribe (natsSubscription **sub, natsConnection *nc, const char *subject, natsMsgHandler cb, void *cbClosure)
 Creates an asynchronous subscription. More...
 
NATS_EXTERN natsStatus natsConnection_SubscribeTimeout (natsSubscription **sub, natsConnection *nc, const char *subject, int64_t timeout, natsMsgHandler cb, void *cbClosure)
 Creates an asynchronous subscription with a timeout. More...
 
NATS_EXTERN natsStatus natsConnection_SubscribeSync (natsSubscription **sub, natsConnection *nc, const char *subject)
 Creates a synchronous subcription. More...
 
NATS_EXTERN natsStatus natsConnection_QueueSubscribe (natsSubscription **sub, natsConnection *nc, const char *subject, const char *queueGroup, natsMsgHandler cb, void *cbClosure)
 Creates an asynchronous queue subscriber. More...
 
NATS_EXTERN natsStatus natsConnection_QueueSubscribeTimeout (natsSubscription **sub, natsConnection *nc, const char *subject, const char *queueGroup, int64_t timeout, natsMsgHandler cb, void *cbClosure)
 Creates an asynchronous queue subscriber with a timeout. More...
 
NATS_EXTERN natsStatus natsConnection_QueueSubscribeSync (natsSubscription **sub, natsConnection *nc, const char *subject, const char *queueGroup)
 Creates a synchronous queue subscriber. More...
 
NATS_EXTERN natsStatus natsSubscription_NoDeliveryDelay (natsSubscription *sub)
 Enables the No Delivery Delay mode. More...
 
NATS_EXTERN natsStatus natsSubscription_NextMsg (natsMsg **nextMsg, natsSubscription *sub, int64_t timeout)
 Returns the next available message. More...
 
NATS_EXTERN natsStatus natsSubscription_Unsubscribe (natsSubscription *sub)
 Unsubscribes. More...
 
NATS_EXTERN natsStatus natsSubscription_AutoUnsubscribe (natsSubscription *sub, int max)
 Auto-Unsubscribes. More...
 
NATS_EXTERN natsStatus natsSubscription_QueuedMsgs (natsSubscription *sub, uint64_t *queuedMsgs)
 Gets the number of pending messages. More...
 
NATS_EXTERN natsStatus natsSubscription_SetPendingLimits (natsSubscription *sub, int msgLimit, int bytesLimit)
 Sets the limit for pending messages and bytes. More...
 
NATS_EXTERN natsStatus natsSubscription_GetPendingLimits (natsSubscription *sub, int *msgLimit, int *bytesLimit)
 Returns the current limit for pending messages and bytes. More...
 
NATS_EXTERN natsStatus natsSubscription_GetPending (natsSubscription *sub, int *msgs, int *bytes)
 Returns the number of pending messages and bytes. More...
 
NATS_EXTERN natsStatus natsSubscription_GetDelivered (natsSubscription *sub, int64_t *msgs)
 Returns the number of delivered messages. More...
 
NATS_EXTERN natsStatus natsSubscription_GetDropped (natsSubscription *sub, int64_t *msgs)
 Returns the number of dropped messages. More...
 
NATS_EXTERN natsStatus natsSubscription_GetMaxPending (natsSubscription *sub, int *msgs, int *bytes)
 Returns the maximum number of pending messages and bytes. More...
 
NATS_EXTERN natsStatus natsSubscription_ClearMaxPending (natsSubscription *sub)
 Clears the statistics regarding the maximum pending values. More...
 
NATS_EXTERN natsStatus natsSubscription_GetStats (natsSubscription *sub, int *pendingMsgs, int *pendingBytes, int *maxPendingMsgs, int *maxPendingBytes, int64_t *deliveredMsgs, int64_t *droppedMsgs)
 Get various statistics from this subscription. More...
 
NATS_EXTERN bool natsSubscription_IsValid (natsSubscription *sub)
 Checks the validity of the subscription. More...
 
NATS_EXTERN natsStatus natsSubscription_Drain (natsSubscription *sub)
 Drains the subscription with a default timeout. More...
 
NATS_EXTERN natsStatus natsSubscription_DrainTimeout (natsSubscription *sub, int64_t timeout)
 Drains the subscription with the specified timeout. More...
 
NATS_EXTERN natsStatus natsSubscription_WaitForDrainCompletion (natsSubscription *sub, int64_t timeout)
 Blocks until the drain operation completes. More...
 
NATS_EXTERN natsStatus natsSubscription_DrainCompletionStatus (natsSubscription *sub)
 Returns the status of the drain after completion. More...
 
NATS_EXTERN natsStatus natsSubscription_SetOnCompleteCB (natsSubscription *sub, natsOnCompleteCB cb, void *closure)
 Sets a completion callback. More...
 
NATS_EXTERN void natsSubscription_Destroy (natsSubscription *sub)
 Destroys the subscription. More...
 
NATS_EXTERN natsStatus stanConnection_Connect (stanConnection **sc, const char *clusterID, const char *clientID, stanConnOptions *options)
 Connects to a NATS Streaming Server using the provided options. More...
 
NATS_EXTERN natsStatus stanConnection_GetNATSConnection (stanConnection *sc, natsConnection **nc)
 Returns the underlying NATS Connection. More...
 
NATS_EXTERN void stanConnection_ReleaseNATSConnection (stanConnection *sc)
 Releases the NATS Connection. More...
 
NATS_EXTERN natsStatus stanConnection_Close (stanConnection *sc)
 Closes the connection. More...
 
NATS_EXTERN natsStatus stanConnection_Destroy (stanConnection *sc)
 Destroys the connection object. More...
 
NATS_EXTERN natsStatus stanConnection_Publish (stanConnection *sc, const char *channel, const void *data, int dataLen)
 Publishes data on a channel. More...
 
NATS_EXTERN natsStatus stanConnection_PublishAsync (stanConnection *sc, const char *channel, const void *data, int dataLen, stanPubAckHandler ah, void *ahClosure)
 Asynchronously publishes data on a channel. More...
 
NATS_EXTERN natsStatus stanConnection_Subscribe (stanSubscription **sub, stanConnection *sc, const char *channel, stanMsgHandler cb, void *cbClosure, stanSubOptions *options)
 Creates a subscription. More...
 
NATS_EXTERN natsStatus stanConnection_QueueSubscribe (stanSubscription **sub, stanConnection *sc, const char *channel, const char *queueGroup, stanMsgHandler cb, void *cbClosure, stanSubOptions *options)
 Creates a queue subscription. More...
 
NATS_EXTERN natsStatus stanSubscription_SetOnCompleteCB (stanSubscription *sub, natsOnCompleteCB cb, void *closure)
 Sets a completion callback. More...
 
NATS_EXTERN natsStatus stanSubscription_AckMsg (stanSubscription *sub, stanMsg *msg)
 Acknowledge a message. More...
 
NATS_EXTERN natsStatus stanSubscription_Unsubscribe (stanSubscription *sub)
 Permanently remove a subscription. More...
 
NATS_EXTERN natsStatus stanSubscription_Close (stanSubscription *sub)
 Closes the subscription. More...
 
NATS_EXTERN void stanSubscription_Destroy (stanSubscription *sub)
 Destroys the subscription. More...
 

Macro Definition Documentation

#define NATS_EXTERN

Based on the platform this is compiled on, it will resolve to the appropriate instruction so that objects are properly exported when building the shared library.

#define NATS_DEFAULT_URL   "nats://localhost:4222"

This is the default URL a NATS Server, running with default listen port, can be reached at.

Typedef Documentation

typedef int natsSock