NATS C Client with JetStream and Streaming support  3.9.1
The nats.io C Client, Supported by Synadia Communications Inc.
nats.h
Go to the documentation of this file.
1 // Copyright 2015-2024 The NATS Authors
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
14 #ifndef NATS_H_
15 #define NATS_H_
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #include <stdlib.h>
22 #include <stdint.h>
23 #include <stdbool.h>
24 #include <inttypes.h>
25 #include <stdio.h>
26 
27 #include "status.h"
28 #include "version.h"
29 
37 #if defined(_WIN32)
38  #include <winsock2.h>
39  #if defined(nats_EXPORTS)
40  #define NATS_EXTERN __declspec(dllexport)
41  #elif defined(nats_IMPORTS)
42  #define NATS_EXTERN __declspec(dllimport)
43  #else
44  #define NATS_EXTERN
45  #endif
46 
47  typedef SOCKET natsSock;
48 #else
49  #define NATS_EXTERN
50  typedef int natsSock;
51 #endif
52 
86 #define NATS_DEFAULT_URL "nats://localhost:4222"
87 
97  #define JSMsgSize "Nats-Msg-Size"
98 
111  #define JSMsgRollup "Nats-Rollup"
112 
120  #define JSMsgRollupSubject "sub"
121 
129  #define JSMsgRollupAll "all"
130 
131  // Headers for republished messages and direct get.
132  #define JSStream "Nats-Stream"
133  #define JSSequence "Nats-Sequence"
134  #define JSLastSequence "Nats-Last-Sequence"
135  #define JSTimeStamp "Nats-Time-Stamp"
136  #define JSSubject "Nats-Subject"
137 
138 //
139 // Types.
140 //
152 typedef struct __natsConnection natsConnection;
153 
159 typedef struct __natsStatistics natsStatistics;
160 
165 typedef struct __natsSubscription natsSubscription;
166 
172 typedef struct __natsMsg natsMsg;
173 
178 typedef struct __natsOptions natsOptions;
179 
187 typedef char natsInbox;
188 
189 
195 typedef struct __natsClientConfig
196 {
198 
199  int64_t LockSpinCount;
200 
201  // Subscription message delivery thread control
204 
205  // Reply message delivery thread control
210 
234 typedef struct natsMsgList
235 {
237  int Count;
238 
240 
246 typedef struct natsMetadata
247 {
248  // User-provided metadata for the stream, encoded as an array of {"key", "value",...}
249  const char **List;
250  // Number of key/value pairs in Metadata, 1/2 of the length of the array.
251  int Count;
253 
262 typedef struct __jsCtx jsCtx;
263 
279 typedef struct jsPubOptions
280 {
281  int64_t MaxWait;
282  const char *MsgId;
283  const char *ExpectStream;
284  const char *ExpectLastMsgId;
285  uint64_t ExpectLastSeq;
288 
290 
294 typedef enum
295 {
299 
301 
305 typedef enum
306 {
309 
311 
315 typedef enum
316 {
319 
320 } jsStorageType;
321 
325 typedef enum
326 {
330 
334 typedef enum
335 {
342 
344 
348 typedef enum
349 {
353 
354 
355 } jsAckPolicy;
356 
360 typedef enum
361 {
364 
366 
367 
379 typedef struct jsPlacement
380 {
381  const char *Cluster;
382  const char **Tags;
383  int TagsLen;
384 
386 
396 typedef struct jsExternalStream
397 {
398  const char *APIPrefix;
399  const char *DeliverPrefix;
400 
402 
415 typedef struct jsStreamSource
416 {
417  const char *Name;
418  uint64_t OptStartSeq;
419  int64_t OptStartTime;
420  const char *FilterSubject;
422  // Domain and External are mutually exclusive.
423  // If Domain is set, an External value will be created with
424  // the APIPrefix constructed based on the Domain value.
425  const char *Domain;
426 
428 
432 typedef struct jsRePublish
433 {
434  const char *Source;
435  const char *Destination;
437 
439 
445 {
446  const char *Source;
447  const char *Destination;
449 
455 {
459 
539 typedef struct jsStreamConfig {
540  const char *Name;
541  const char *Description;
542  const char **Subjects;
545  int64_t MaxConsumers;
546  int64_t MaxMsgs;
547  int64_t MaxBytes;
548  int64_t MaxAge;
550  int32_t MaxMsgSize;
553  int64_t Replicas;
554  bool NoAck;
555  const char *Template;
556  int64_t Duplicates;
561  bool Sealed;
562  bool DenyDelete;
563  bool DenyPurge;
564 
568 
572 
576 
580 
584 
589 
593 
595  uint64_t FirstSeq;
596 
600 
605 
609 typedef struct jsLostStreamData
610 {
611  uint64_t *Msgs;
612  int MsgsLen;
613  uint64_t Bytes;
614 
616 
622 typedef struct jsStreamStateSubject
623 {
624  const char *Subject;
625  uint64_t Msgs;
626 
628 
658 typedef struct jsStreamStateSubjects
659 {
661  int Count;
662 
664 
671 typedef struct jsStreamState
672 {
673  uint64_t Msgs;
674  uint64_t Bytes;
675  uint64_t FirstSeq;
676  int64_t FirstTime;
677  uint64_t LastSeq;
678  int64_t LastTime;
679  int64_t NumSubjects;
681  uint64_t NumDeleted;
682  uint64_t *Deleted;
685  int64_t Consumers;
686 
688 
693 typedef struct jsPeerInfo
694 {
695  char *Name;
696  bool Current;
697  bool Offline;
698  int64_t Active;
699  uint64_t Lag;
700 
702 
707 typedef struct jsClusterInfo
708 {
709  char *Name;
710  char *Leader;
713 
715 
719 typedef struct jsStreamSourceInfo
720 {
721  char *Name;
723  uint64_t Lag;
724  int64_t Active;
725  const char * FilterSubject;
728 
730 
734 typedef struct jsStreamAlternate
735 {
736  const char *Name;
737  const char *Domain;
738  const char *Cluster;
739 
741 
748 typedef struct jsStreamInfo
749 {
751  int64_t Created;
759 
761 
769 typedef struct jsStreamInfoList
770 {
772  int Count;
773 
775 
783 typedef struct jsStreamNamesList
784 {
785  char **List;
786  int Count;
787 
789 
833 typedef struct jsConsumerConfig
834 {
835  const char *Name;
836  const char *Durable;
837  const char *Description;
839  uint64_t OptStartSeq;
840  int64_t OptStartTime;
842  int64_t AckWait;
843  int64_t MaxDeliver;
844  int64_t *BackOff;
846  const char *FilterSubject;
848  uint64_t RateLimit;
849  const char *SampleFrequency;
850  int64_t MaxWaiting;
851  int64_t MaxAckPending;
853  int64_t Heartbeat;
855 
856  // Pull based options.
857  int64_t MaxRequestBatch;
860 
861  // Push based options.
862  const char *DeliverSubject;
863  const char *DeliverGroup;
864 
865  // Ephemeral inactivity threshold.
867 
868  // Generally inherited by parent stream and other markers, now can be configured directly.
869  int64_t Replicas;
870  // Force memory storage.
872 
873  // Configuration options introduced in 2.10
874 
875  const char **FilterSubjects;
878 
879  // Configuration options introduced in 2.11
880 
881  int64_t PauseUntil;
883 
902 {
903  uint64_t Stream;
904  uint64_t ConsumerClient;
905  uint64_t ConsumerServer;
906 
908 
924 typedef struct jsSubOptions
925 {
932  const char *Stream;
942  const char *Consumer;
957  const char *Queue;
970  bool ManualAck;
982  bool Ordered;
983 
985 
989 typedef struct jsSequencePair
990 {
991  uint64_t Consumer;
992  uint64_t Stream;
993 
995 
999 typedef struct jsSequenceInfo
1000 {
1001  uint64_t Consumer;
1002  uint64_t Stream;
1003  int64_t Last;
1004 
1006 
1013 typedef struct jsConsumerInfo
1014 {
1015  char *Stream;
1016  char *Name;
1017  int64_t Created;
1021  int64_t NumAckPending;
1023  int64_t NumWaiting;
1024  uint64_t NumPending;
1027  bool Paused;
1028  int64_t PauseRemaining;
1030 
1038 typedef struct jsConsumerInfoList
1039 {
1041  int Count;
1042 
1044 
1052 typedef struct jsConsumerNamesList
1053 {
1054  char **List;
1055  int Count;
1056 
1058 
1065 {
1066  bool Paused;
1067  int64_t PauseUntil;
1068  int64_t PauseRemaining;
1070 
1074 typedef struct jsAPIStats
1075 {
1076  uint64_t Total;
1077  uint64_t Errors;
1078 
1080 
1084 typedef struct jsAccountLimits
1085 {
1086  int64_t MaxMemory;
1087  int64_t MaxStore;
1088  int64_t MaxStreams;
1089  int64_t MaxConsumers;
1090  int64_t MaxAckPending;
1094 
1096 
1097 typedef struct jsTier
1098 {
1099  const char *Name;
1100  uint64_t Memory;
1101  uint64_t Store;
1102  int64_t Streams;
1103  int64_t Consumers;
1105 
1107 
1111 typedef struct jsAccountInfo
1112 {
1113  uint64_t Memory;
1114  uint64_t Store;
1115  int64_t Streams;
1116  int64_t Consumers;
1117  char *Domain;
1122 
1124 
1132 typedef struct jsMsgMetaData
1133 {
1135  uint64_t NumDelivered;
1136  uint64_t NumPending;
1137  int64_t Timestamp;
1138  char *Stream;
1139  char *Consumer;
1140  char *Domain;
1141 
1143 
1147 typedef struct jsPubAck
1148 {
1149  char *Stream;
1150  uint64_t Sequence;
1151  char *Domain;
1153 
1155 
1160 typedef struct jsPubAckErr
1161 {
1165  const char *ErrText;
1166 
1168 
1169 #ifndef BUILD_IN_DOXYGEN
1170 // Forward declarations
1171 typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
1172 typedef void (*jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure);
1173 #endif
1174 
1185 {
1186  uint64_t Sequence;
1187  const char *NextBySubject;
1188  const char *LastBySubject;
1189 
1191 
1197 typedef struct jsFetchRequest
1198 {
1199  int64_t Expires;
1200  int Batch;
1201  int64_t MaxBytes;
1202  bool NoWait;
1203  int64_t Heartbeat;
1204 
1206 
1228 typedef void (*jsFetchCompleteHandler)(natsConnection *nc, natsSubscription *sub, natsStatus s, void *closure);
1229 
1240 typedef bool (*jsFetchNextHandler)(int *messages, int64_t *maxBytes, natsSubscription *sub, void *closure);
1241 
1247 typedef struct jsOptions
1248 {
1249  const char *Prefix;
1250  const char *Domain;
1251  int64_t Wait;
1252 
1254  {
1255  int64_t MaxPending;
1256 
1257  // If jsPubAckHandler is specified, the callback will be invoked
1258  // for every asynchronous published message, either as a positive
1259  // result, or with the error encountered when publishing that
1260  // message. If this callback is specified, ErrHandler (see below)
1261  // will be ignored.
1264 
1265  // This callback is invoked for messages published asynchronously
1266  // when an error is returned by the server or if the library has
1267  // timed-out waiting for an acknowledgment back from the server
1268  // (if publish uses the jsPubOptions.MaxWait).
1271 
1272  int64_t StallWait;
1273 
1275 
1277  {
1278  int64_t Timeout;
1280  int64_t MaxBytes;
1281 
1289  bool NoWait;
1290 
1296 
1299  int64_t Heartbeat;
1300 
1305 
1313 
1321 
1323 
1324 
1332  {
1343  {
1344  const char *Subject;
1345  uint64_t Sequence;
1346  uint64_t Keep;
1347 
1348  } Purge;
1349 
1354  {
1356  const char *SubjectsFilter;
1357 
1358  } Info;
1359 
1361 
1363 
1367 typedef struct __kvStore kvStore;
1368 
1372 typedef struct __kvEntry kvEntry;
1373 
1377 typedef struct __kvStatus kvStatus;
1378 
1382 typedef struct __kvWatcher kvWatcher;
1383 
1387 typedef enum
1388 {
1393 
1394 } kvOperation;
1395 
1401 typedef struct kvConfig
1402 {
1403  const char *Bucket;
1404  const char *Description;
1405  int32_t MaxValueSize;
1406  uint8_t History;
1407  int64_t TTL;
1408  int64_t MaxBytes;
1415 
1417 
1423 typedef struct kvWatchOptions
1424 {
1427  bool MetaOnly;
1428  int64_t Timeout;
1429 
1431 
1437 typedef struct kvPurgeOptions
1438 {
1439  // How long to wait (in milliseconds) for some operations to complete.
1440  int64_t Timeout;
1441 
1442  // When calling kvStore_PurgeDeletes(), all keys that have a delete or
1443  // purge marker as the last entry are gathered and then those keys
1444  // are purged of their content, including the marker.
1445  // Starting with NATS C client v3.3.0, if this option is not specified,
1446  // only the markers older than 30 minutes will be deleted. Use this
1447  // option to set the limit or a negative value to force removal of
1448  // markers regardless of their age.
1449  // The value is expressed as a time in nanoseconds.
1451 
1453 
1471 typedef struct kvEntryList
1472 {
1474  int Count;
1475 
1477 
1495 typedef struct kvKeysList
1496 {
1497  char **Keys;
1498  int Count;
1499 
1501 
1502 #if defined(NATS_HAS_STREAMING)
1507 typedef struct __stanConnection stanConnection;
1508 
1513 typedef struct __stanSubscription stanSubscription;
1514 
1519 typedef struct __stanMsg stanMsg;
1520 
1525 typedef struct __stanConnOptions stanConnOptions;
1526 
1531 typedef struct __stanSubOptions stanSubOptions;
1532 #endif
1533  // end of typesGroup
1535 
1536 //
1537 // Callbacks.
1538 //
1539 
1562 typedef void (*natsMsgHandler)(
1563  natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure);
1564 
1578 typedef void (*natsConnectionHandler)(
1579  natsConnection *nc, void *closure);
1580 
1587 typedef void (*natsErrHandler)(
1588  natsConnection *nc, natsSubscription *subscription, natsStatus err,
1589  void *closure);
1590 
1605  void **userData,
1606  void *loop,
1607  natsConnection *nc,
1608  natsSock socket);
1609 
1620  void *userData,
1621  bool add);
1622 
1633  void *userData,
1634  bool add);
1635 
1644  void *userData);
1645 
1668  char **userJWT,
1669  char **customErrTxt,
1670  void *closure);
1671 
1672 
1699  char **customErrTxt,
1700  unsigned char **signature,
1701  int *signatureLength,
1702  const char *nonce,
1703  void *closure);
1704 
1713 typedef const char* (*natsTokenHandler)(void *closure);
1714 
1715 
1723 typedef void (*natsOnCompleteCB)(void *closure);
1724 
1745 typedef int64_t (*natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure);
1746 
1747 #ifdef BUILD_IN_DOXYGEN
1781 typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
1782 
1824 typedef void (*jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure);
1825 #endif
1826 
1827 #if defined(NATS_HAS_STREAMING)
1836 typedef void (*stanPubAckHandler)(const char *guid, const char *error, void *closure);
1837 
1847 typedef void (*stanMsgHandler)(
1848  stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure);
1849 
1857  stanConnection *sc, const char* errorTxt, void *closure);
1858 #endif
1859  // end of callbacksGroup
1861 
1862 //
1863 // Functions.
1864 //
1891 natsStatus
1893 
1908 nats_Open(int64_t lockSpinCount);
1909 
1910 
1915 NATS_EXTERN const char*
1917 
1925 NATS_EXTERN uint32_t
1927 
1928 #ifdef BUILD_IN_DOXYGEN
1944 #else
1945 
1946 #define nats_CheckCompatibility() nats_CheckCompatibilityImpl(NATS_VERSION_REQUIRED_NUMBER, \
1947  NATS_VERSION_NUMBER, \
1948  NATS_VERSION_STRING)
1949 
1950 NATS_EXTERN bool
1951 nats_CheckCompatibilityImpl(uint32_t reqVerNumber, uint32_t verNumber, const char *verString);
1952 
1953 #endif
1954 
1959 NATS_EXTERN int64_t
1960 nats_Now(void);
1961 
1967 NATS_EXTERN int64_t
1969 
1977 NATS_EXTERN void
1978 nats_Sleep(int64_t sleepTime);
1979 
1992 NATS_EXTERN const char*
1994 
2004 nats_GetLastErrorStack(char *buffer, size_t bufLen);
2005 
2026 NATS_EXTERN void
2028 
2060 
2071 NATS_EXTERN void
2073 
2099 nats_Sign(const char *encodedSeed,
2100  const char *input,
2101  unsigned char **signature,
2102  int *signatureLength);
2103 
2124 NATS_EXTERN void
2126 
2173 nats_CloseAndWait(int64_t timeout);
2174  // end of libraryGroup
2176 
2192 NATS_EXTERN const char*
2194  // end of statusGroup
2196 
2216 
2235  uint64_t *inMsgs, uint64_t *inBytes,
2236  uint64_t *outMsgs, uint64_t *outBytes,
2237  uint64_t *reconnects);
2238 
2245 NATS_EXTERN void
2247  // end of statsGroup
2249 
2276 
2298 /*
2299  * The above is for doxygen. The proper syntax for username/password
2300  * is without the '\' character:
2301  *
2302  * nats://localhost:4222
2303  * nats://user@localhost:4222
2304  * nats://user:password@localhost:4222
2305  */
2307 natsOptions_SetURL(natsOptions *opts, const char *url);
2308 
2324 natsOptions_SetServers(natsOptions *opts, const char** servers, int serversCount);
2325 
2352 natsOptions_SetUserInfo(natsOptions *opts, const char *user, const char *password);
2353 
2379 natsOptions_SetToken(natsOptions *opts, const char *token);
2380 
2398  void *closure);
2399 
2410 natsOptions_SetNoRandomize(natsOptions *opts, bool noRandomize);
2411 
2425 natsOptions_SetTimeout(natsOptions *opts, int64_t timeout);
2426 
2435 natsOptions_SetName(natsOptions *opts, const char *name);
2436 
2448 
2465 
2481 
2508 natsOptions_SetCATrustedCertificates(natsOptions *opts, const char *certificates);
2509 
2526  const char *certsFileName,
2527  const char *keyFileName);
2528 
2542  const char *cert,
2543  const char *key);
2544 
2561 natsOptions_SetCiphers(natsOptions *opts, const char *ciphers);
2562 
2577 natsOptions_SetCipherSuites(natsOptions *opts, const char *ciphers);
2578 
2589 natsOptions_SetExpectedHostname(natsOptions *opts, const char *hostname);
2590 
2603 
2616 
2628 natsOptions_SetPedantic(natsOptions *opts, bool pedantic);
2629 
2640 natsOptions_SetPingInterval(natsOptions *opts, int64_t interval);
2641 
2654 natsOptions_SetMaxPingsOut(natsOptions *opts, int maxPingsOut);
2655 
2669 
2683 
2692 natsOptions_SetMaxReconnect(natsOptions *opts, int maxReconnect);
2693 
2708 natsOptions_SetReconnectWait(natsOptions *opts, int64_t reconnectWait);
2709 
2734 natsOptions_SetReconnectJitter(natsOptions *opts, int64_t jitter, int64_t jitterTLS);
2735 
2757  void *closure);
2758 
2772 natsOptions_SetReconnectBufSize(natsOptions *opts, int reconnectBufSize);
2773 
2789 
2804 natsOptions_SetMaxPendingBytes(natsOptions* opts, int64_t maxPending);
2805 
2822  void *closure);
2823 
2838  void *closure);
2839 
2858  natsConnectionHandler disconnectedCb,
2859  void *closure);
2860 
2878  natsConnectionHandler reconnectedCb,
2879  void *closure);
2880 
2897  natsConnectionHandler discoveredServersCb,
2898  void *closure);
2899 
2915 
2934  natsConnectionHandler lameDuckCb,
2935  void *closure);
2936 
2956  void *loop,
2957  natsEvLoop_Attach attachCb,
2958  natsEvLoop_ReadAddRemove readCb,
2959  natsEvLoop_WriteAddRemove writeCb,
2960  natsEvLoop_Detach detachCb);
2961 
2986 
3011 
3040 natsOptions_SetSendAsap(natsOptions *opts, bool sendAsap);
3041 
3053 
3070 
3091 
3147  natsConnectionHandler connectedCb, void* closure);
3148 
3179  natsUserJWTHandler ujwtCB,
3180  void *ujwtClosure,
3181  natsSignatureHandler sigCB,
3182  void *sigClosure);
3183 
3224  const char *userOrChainedFile,
3225  const char *seedFile);
3226 
3241  const char *jwtAndSeedContent);
3242 
3268  const char *pubKey,
3269  natsSignatureHandler sigCB,
3270  void *sigClosure);
3271 
3298  const char *pubKey,
3299  const char *seedFile);
3300 
3316 
3353 
3370 natsOptions_SetCustomInboxPrefix(natsOptions *opts, const char *inboxPrefix);
3371 
3387 
3395 NATS_EXTERN void
3397  // end of optsGroup
3399 
3400 #if defined(NATS_HAS_STREAMING)
3436 
3459 stanConnOptions_SetURL(stanConnOptions *opts, const char *url);
3460 
3479 
3491 
3503 
3513 
3514 
3530 stanConnOptions_SetMaxPubAcksInflight(stanConnOptions *opts, int maxPubAcksInflight, float percentage);
3531 
3548 stanConnOptions_SetPings(stanConnOptions *opts, int interval, int maxOut);
3549 
3562 
3570 NATS_EXTERN void
3572  // end of stanConnOptsGroup
3574 
3607 
3627 stanSubOptions_SetDurableName(stanSubOptions *opts, const char *durableName);
3628 
3644 
3658 
3676 
3693 
3707 
3718 
3728 
3745 
3753 NATS_EXTERN void
3755  // end of stanSubOptsGroup
3757 #endif
3758 
3780 
3787 NATS_EXTERN void
3789  // end of inboxGroup
3791 
3810 NATS_EXTERN void
3812 
3831 natsMsg_Create(natsMsg **newMsg, const char *subj, const char *reply,
3832  const char *data, int dataLen);
3833 
3842 NATS_EXTERN const char*
3844 
3854 NATS_EXTERN const char*
3856 
3872 NATS_EXTERN const char*
3874 
3881 NATS_EXTERN int
3883 
3900 natsMsgHeader_Set(natsMsg *msg, const char *key, const char *value);
3901 
3918 natsMsgHeader_Add(natsMsg *msg, const char *key, const char *value);
3919 
3939 natsMsgHeader_Get(natsMsg *msg, const char *key, const char **value);
3940 
3975 natsMsgHeader_Values(natsMsg *msg, const char *key, const char* **values, int *count);
3976 
4007 natsMsgHeader_Keys(natsMsg *msg, const char* **keys, int *count);
4008 
4023 natsMsgHeader_Delete(natsMsg *msg, const char *key);
4024 
4050 NATS_EXTERN bool
4052 
4059 NATS_EXTERN void
4061  // end of msgGroup
4063 
4064 #if defined(NATS_HAS_STREAMING)
4077 NATS_EXTERN uint64_t
4079 
4086 NATS_EXTERN int64_t
4088 
4097 NATS_EXTERN bool
4099 
4115 NATS_EXTERN const char*
4117 
4124 NATS_EXTERN int
4126 
4133 NATS_EXTERN void
4135  // end of stanMsgGroup
4137 #endif
4138 
4171 
4181 natsStatus
4183 
4194 NATS_EXTERN void
4196 
4207 NATS_EXTERN void
4209 
4230 
4237 NATS_EXTERN bool
4239 
4246 NATS_EXTERN bool
4248 
4255 NATS_EXTERN bool
4257 
4268 
4280 NATS_EXTERN int
4282 
4300 
4315 
4325 NATS_EXTERN int64_t
4327 
4339 
4350 natsConnection_GetConnectedUrl(natsConnection *nc, char *buffer, size_t bufferSize);
4351 
4362 natsConnection_GetConnectedServerId(natsConnection *nc, char *buffer, size_t bufferSize);
4363 
4385 natsConnection_GetServers(natsConnection *nc, char ***servers, int *count);
4386 
4408 natsConnection_GetDiscoveredServers(natsConnection *nc, char ***servers, int *count);
4409 
4423 natsConnection_GetLastError(natsConnection *nc, const char **lastError);
4424 
4440 
4461 
4481 
4496  const unsigned char *message, int messageLen,
4497  unsigned char sig[64]);
4498 
4519 
4532 
4542 
4564 
4574 NATS_EXTERN void
4576 
4584 NATS_EXTERN void
4586  // end of connMgtGroup
4588 
4607  const void *data, int dataLen);
4608 
4625  const char *str);
4626 
4639 
4654  const char *reply, const void *data, int dataLen);
4655 
4674  const char *reply, const char *str);
4675 
4694 natsConnection_Request(natsMsg **replyMsg, natsConnection *nc, const char *subj,
4695  const void *data, int dataLen, int64_t timeout);
4696 
4720  const char *subj, const char *str,
4721  int64_t timeout);
4722 
4739  natsMsg *requestMsg, int64_t timeout);
4740  // end of connPubGroup
4742 
4765  const char *subject, natsMsgHandler cb,
4766  void *cbClosure);
4767 
4800  const char *subject, int64_t timeout,
4801  natsMsgHandler cb, void *cbClosure);
4802 
4815  const char *subject);
4816 
4836  const char *subject, const char *queueGroup,
4837  natsMsgHandler cb, void *cbClosure);
4838 
4873  const char *subject, const char *queueGroup,
4874  int64_t timeout, natsMsgHandler cb, void *cbClosure);
4875 
4889  const char *subject, const char *queueGroup);
4890  // end of connSubGroup
4892  // end of connGroup
4894 
4915 
4940  int64_t timeout);
4941 
4952 
4966 
4977 natsSubscription_QueuedMsgs(natsSubscription *sub, uint64_t *queuedMsgs);
4978 
4987 NATS_EXTERN int64_t
4989 
5000 NATS_EXTERN const char*
5002 
5024 natsSubscription_SetPendingLimits(natsSubscription *sub, int msgLimit, int bytesLimit);
5025 
5046 natsSubscription_GetPendingLimits(natsSubscription *sub, int *msgLimit, int *bytesLimit);
5047 
5063 natsSubscription_GetPending(natsSubscription *sub, int *msgs, int *bytes);
5064 
5075 
5093 
5108 
5117 
5146  int *pendingMsgs,
5147  int *pendingBytes,
5148  int *maxPendingMsgs,
5149  int *maxPendingBytes,
5150  int64_t *deliveredMsgs,
5151  int64_t *droppedMsgs);
5152 
5161 NATS_EXTERN bool
5163 
5183 
5236 
5261 
5289 
5320 
5328 NATS_EXTERN void
5330  // end of subGroup
5332 
5333 #if defined(NATS_HAS_STREAMING)
5375 stanConnection_Connect(stanConnection **sc, const char *clusterID, const char *clientID,
5376  stanConnOptions *options);
5377 
5402 
5427 NATS_EXTERN void
5429 
5442 
5452  // end of stanConnMgtGroup
5454 
5472 stanConnection_Publish(stanConnection *sc, const char *channel,
5473  const void *data, int dataLen);
5474 
5500  const void *data, int dataLen,
5501  stanPubAckHandler ah, void *ahClosure);
5502  // end of stanConnPubGroup
5504 
5529  const char *channel, stanMsgHandler cb,
5530  void *cbClosure, stanSubOptions *options);
5531 
5553  const char *channel, const char *queueGroup,
5554  stanMsgHandler cb, void *cbClosure, stanSubOptions *options);
5555  // end of stanConnSubGroup
5557  // end of stanConnGroup
5559 
5590 
5602 
5624 
5637 
5645 NATS_EXTERN void
5647  // end of stanSubGroup
5649 #endif
5650 
5666 
5683 
5690 NATS_EXTERN void
5692 
5708 
5717 
5726 
5735 
5744 
5766 
5788 
5812 js_PurgeStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5813 
5825 js_DeleteStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5826 
5845 js_GetMsg(natsMsg **msg, jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5846 
5865 js_GetLastMsg(natsMsg **msg, jsCtx *js, const char *stream, const char *subject, jsOptions *opts, jsErrCode *errCode);
5866 
5876 
5900 js_DirectGetMsg(natsMsg **msg, jsCtx *js, const char *stream, jsOptions *opts, jsDirectGetMsgOptions *dgOpts);
5901 
5919 js_DeleteMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5920 
5936 js_EraseMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5937 
5965 js_GetStreamInfo(jsStreamInfo **si, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5966 
5973 NATS_EXTERN void
5975 
5991 js_Streams(jsStreamInfoList **list, jsCtx *js, jsOptions *opts, jsErrCode *errCode);
5992 
6002 NATS_EXTERN void
6004 
6021 
6031 NATS_EXTERN void
6033 
6044 
6066  const char *stream, jsConsumerConfig *cfg,
6067  jsOptions *opts, jsErrCode *errCode);
6068 
6090  const char *stream, jsConsumerConfig *cfg,
6091  jsOptions *opts, jsErrCode *errCode);
6092 
6108  const char *stream, const char *consumer,
6109  jsOptions *opts, jsErrCode *errCode);
6110 
6123 js_DeleteConsumer(jsCtx *js, const char *stream, const char *consumer,
6124  jsOptions *opts, jsErrCode *errCode);
6125 
6142  const char *stream, const char *consumer,
6143  uint64_t pauseUntil, jsOptions *opts, jsErrCode *errCode);
6144 
6151 NATS_EXTERN void
6153 
6160 NATS_EXTERN void
6162 
6178 js_Consumers(jsConsumerInfoList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
6179 
6189 NATS_EXTERN void
6191 
6207 js_ConsumerNames(jsConsumerNamesList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
6208 
6218 NATS_EXTERN void
6220 
6237 
6244 NATS_EXTERN void
6246  // end of jsAssetsGroup
6248 
6264 
6281 js_Publish(jsPubAck **pubAck, jsCtx *js, const char *subj, const void *data, int dataLen,
6282  jsPubOptions *opts, jsErrCode *errCode);
6283 
6304 js_PublishMsg(jsPubAck **pubAck, jsCtx *js, natsMsg *msg,
6305  jsPubOptions *opts, jsErrCode *errCode);
6306 
6313 NATS_EXTERN void
6315 
6327 js_PublishAsync(jsCtx *js, const char *subj, const void *data, int dataLen,
6328  jsPubOptions *opts);
6329 
6355 
6369 
6420  // end of jsPubGroup
6422 
6438 
6485 js_Subscribe(natsSubscription **sub, jsCtx *js, const char *subject,
6486  natsMsgHandler cb, void* cbClosure,
6487  jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6488 
6507 js_SubscribeMulti(natsSubscription **sub, jsCtx *js, const char **subjects, int numSubjects,
6508  natsMsgHandler cb, void *cbClosure,
6509  jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6510 
6525 js_SubscribeSync(natsSubscription **sub, jsCtx *js, const char *subject,
6526  jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6527 
6544 js_SubscribeSyncMulti(natsSubscription **sub, jsCtx *js, const char **subjects, int numSubjects,
6545  jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6546 
6569 js_PullSubscribe(natsSubscription **sub, jsCtx *js, const char *subject, const char *durable,
6570  jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6571 
6591 natsSubscription_Fetch(natsMsgList *list, natsSubscription *sub, int batch, int64_t timeout,
6592  jsErrCode *errCode);
6593 
6602 
6627 js_PullSubscribeAsync(natsSubscription **newsub, jsCtx *js, const char *subject, const char *durable,
6628  natsMsgHandler msgCB, void *msgCBClosure,
6629  jsOptions *jsOpts, jsSubOptions *opts, jsErrCode *errCode);
6630 
6645 
6658  jsOptions *opts, jsErrCode *errCode);
6659 
6689  // end of jsSubGroup
6691 
6714 
6721 NATS_EXTERN void
6723 
6734 
6748 
6761 
6775 natsMsg_NakWithDelay(natsMsg *msg, int64_t delay, jsOptions *opts);
6776 
6787 
6798 
6808 NATS_EXTERN uint64_t
6810 
6820 NATS_EXTERN int64_t
6822  // end of jsMsg
6824  // end of jsGroup
6826 
6857 
6874 
6891 js_KeyValue(kvStore **new_kv, jsCtx *js, const char *bucket);
6892 
6903 js_DeleteKeyValue(jsCtx *js, const char *bucket);
6904 
6912 NATS_EXTERN void
6914  // end of kvGroupMgt
6916 
6933 NATS_EXTERN const char*
6935 
6942 NATS_EXTERN const char*
6944 
6951 NATS_EXTERN const void*
6953 
6960 NATS_EXTERN int
6962 
6970 NATS_EXTERN const char*
6972 
6979 NATS_EXTERN uint64_t
6981 
6988 NATS_EXTERN int64_t
6990 
7000 NATS_EXTERN uint64_t
7002 
7013 
7020 NATS_EXTERN void
7022  // end of kvEntry
7024 
7036 kvStore_Get(kvEntry **new_entry, kvStore *kv, const char *key);
7037 
7051 kvStore_GetRevision(kvEntry **new_entry, kvStore *kv, const char *key, uint64_t revision);
7052 
7064 kvStore_Put(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
7065 
7080 kvStore_PutString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
7081 
7093 kvStore_Create(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
7094 
7109 kvStore_CreateString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
7110 
7123 kvStore_Update(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len, uint64_t last);
7124 
7140 kvStore_UpdateString(uint64_t *rev, kvStore *kv, const char *key, const char *data, uint64_t last);
7141 
7150 kvStore_Delete(kvStore *kv, const char *key);
7151 
7161 kvStore_Purge(kvStore *kv, const char *key, kvPurgeOptions *opts);
7162 
7172 
7182 
7202 
7220 kvStore_Watch(kvWatcher **new_watcher, kvStore *kv, const char *keys, kvWatchOptions *opts);
7221 
7244 kvStore_WatchMulti(kvWatcher **new_watcher, kvStore *kv, const char **keys, int numKeys, kvWatchOptions *opts);
7245 
7262 
7283 
7308 kvStore_KeysWithFilters(kvKeysList *list, kvStore *kv, const char **filters, int numFilters, kvWatchOptions *opts);
7309 
7321 NATS_EXTERN void
7323 
7347 kvStore_History(kvEntryList *list, kvStore *kv, const char *key, kvWatchOptions *opts);
7348 
7360 NATS_EXTERN void
7362 
7372 NATS_EXTERN const char*
7374 
7375 // PurgeDeletes
7376 
7387 kvStore_Status(kvStatus **new_status, kvStore *kv);
7388 
7415 kvWatcher_Next(kvEntry **new_entry, kvWatcher *w, int64_t timeout);
7416 
7428 
7435 NATS_EXTERN void
7437  // end of kvWatcher
7439 
7456 NATS_EXTERN const char*
7458 
7465 NATS_EXTERN uint64_t
7467 
7474 NATS_EXTERN int64_t
7476 
7483 NATS_EXTERN int64_t
7485 
7492 NATS_EXTERN int64_t
7494 
7501 NATS_EXTERN uint64_t
7503 
7510 NATS_EXTERN void
7512  // end of kvStatus
7514  // end of kvGroup
7516  // end of funcGroup
7518 
7519 //
7520 // Microservices.
7521 //
7522 
7568 typedef struct micro_client_s microClient;
7569 
7573 typedef struct __for_forward_compatibility_only microClientConfig;
7574 
7584 typedef struct micro_endpoint_s microEndpoint;
7585 
7594 
7605 
7615 
7628 typedef struct micro_error_s microError;
7629 
7637 typedef struct micro_group_s microGroup;
7638 
7645 typedef struct micro_group_config_s microGroupConfig;
7646 
7652 typedef struct micro_request_s microRequest;
7653 
7665 typedef struct micro_service_s microService;
7666 
7677 
7687 typedef struct micro_service_info_s microServiceInfo;
7688 
7696 
7697 
7700  // end of microTypes
7702 
7721 typedef microError *(*microRequestHandler)(microRequest *req);
7722 
7746 
7758 typedef void (*microDoneHandler)(microService *m);
7759  // end of microCallbacks
7761 
7773 {
7779  const char *Name;
7780 
7790  const char *Subject;
7791 
7796  const char *QueueGroup;
7797 
7803 
7809 
7814 
7819  void *State;
7820 };
7821 
7826 {
7830  const char *Name;
7831 
7835  const char *Subject;
7836 
7841  const char *QueueGroup;
7842 
7848 };
7849 
7854 {
7855  const char *Name;
7856  const char *Subject;
7857 
7862  const char *QueueGroup;
7863 
7867  int64_t NumRequests;
7868 
7873  int64_t NumErrors;
7874 
7879 
7884 
7889 
7893  char LastErrorString[2048];
7894 };
7895 
7900 {
7902  const char *Prefix;
7903 
7905  const char *QueueGroup;
7906 
7909 };
7910 
7918 {
7924  const char *Name;
7925 
7929  const char *Version;
7930 
7934  const char *Description;
7935 
7940  const char *QueueGroup;
7941 
7947 
7953 
7962 
7971 
7980 
7990 
7998  void *State;
7999 };
8000 
8007 {
8011  const char *Type;
8012 
8016  const char *Name;
8017 
8021  const char *Version;
8022 
8026  const char *Description;
8027 
8031  const char *Id;
8032 
8037 
8042 
8047 };
8048 
8053 {
8057  const char *Type;
8058 
8062  const char *Name;
8063 
8067  const char *Version;
8068 
8072  const char *Id;
8073 
8077  int64_t Started;
8078 
8083 
8088 };
8089  // end of microStructs
8091 
8103 #define MICRO_API_PREFIX "$SRV"
8104 
8108 #define MICRO_INFO_RESPONSE_TYPE "io.nats.micro.v1.info_response"
8109 
8113 #define MICRO_INFO_VERB "INFO"
8114 
8118 #define MICRO_PING_RESPONSE_TYPE "io.nats.micro.v1.ping_response"
8119 
8123 #define MICRO_PING_VERB "PING"
8124 
8128 #define MICRO_STATS_RESPONSE_TYPE "io.nats.micro.v1.stats_response"
8129 
8133 #define MICRO_STATS_VERB "STATS"
8134 
8139 #define MICRO_STATUS_HDR "Nats-Status"
8140 
8145 #define MICRO_ERROR_HDR "Nats-Service-Error"
8146 
8151 #define MICRO_ERROR_CODE_HDR "Nats-Service-Error-Code"
8152  // end of microConstants
8154 
8186 
8202 
8219 
8233 
8244 
8259 
8269 NATS_EXTERN void *
8271 
8286 
8295 NATS_EXTERN bool
8297 
8311 
8329  // end of microServiceFunctions
8331 
8354 
8370  // end of microGroupFunctions
8372 
8393 microRequest_AddHeader(microRequest *req, const char *key, const char *value);
8394 
8406 
8417 
8431 NATS_EXTERN const char *
8433 
8442 NATS_EXTERN int
8444 
8454 NATS_EXTERN void *
8456 
8474 microRequest_GetHeaderKeys(microRequest *req, const char ***keys, int *count);
8475 
8488 microRequest_GetHeaderValue(microRequest *req, const char *key, const char **value);
8489 
8506 microRequest_GetHeaderValues(microRequest *req, const char *key, const char ***values, int *count);
8507 
8516 
8526 NATS_EXTERN const char *
8528 
8537 
8546 NATS_EXTERN void *
8548 
8556 NATS_EXTERN const char *
8558 
8569 microRequest_Respond(microRequest *req, const char *data, size_t len);
8570 
8587 
8632 microRequest_RespondCustom(microRequest *req, microError *err, const char *data, size_t len);
8633 
8648 microRequest_SetHeader(microRequest *req, const char *key, const char *value);
8649  // end of microRequestFunctions
8651 
8668 micro_Errorf(const char *format, ...);
8669 
8682 micro_ErrorfCode(int code, const char *format, ...);
8683 
8692 
8699 NATS_EXTERN int
8701 
8706 NATS_EXTERN void
8708 
8709 #define microError_Ignore(__err) microError_Destroy(__err)
8710 
8720 
8732 NATS_EXTERN const char *
8733 microError_String(microError *err, char *buf, size_t len);
8734 
8749 microError_Wrapf(microError *err, const char *format, ...);
8750  // end of microErrorFunctions
8752 
8769 
8775 NATS_EXTERN void
8777 
8791 microClient_DoRequest(natsMsg **reply, microClient *client, const char *subject, const char *data, int data_len);
8792  // end of microClientFunctions
8794 
8806 NATS_EXTERN void
8808 
8814 NATS_EXTERN void
8816  // end of microCleanupFunctions
8818  // end of microFunctions
8820  // end of microGroup
8822 
8859 #ifdef __cplusplus
8860 }
8861 #endif
8862 
8863 #endif /* NATS_H_ */
void(* natsOnCompleteCB)(void *closure)
Callback used to notify that an object lifecycle is complete.
Definition: nats.h:1723
natsStatus(* natsEvLoop_Attach)(void **userData, void *loop, natsConnection *nc, natsSock socket)
Attach this connection to the external event loop.
Definition: nats.h:1604
natsStatus(* natsUserJWTHandler)(char **userJWT, char **customErrTxt, void *closure)
Callback used to fetch and return account signed user JWT.
Definition: nats.h:1667
natsStatus(* natsEvLoop_WriteAddRemove)(void *userData, bool add)
Write event needs to be added or removed.
Definition: nats.h:1632
int64_t(* natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure)
Callback used to specify how long to wait between reconnects.
Definition: nats.h:1745
void(* jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure)
Callback used to process asynchronous publish responses from JetStream.
Definition: nats.h:1824
const char *(* natsTokenHandler)(void *closure)
Callback used to build a token on connections and reconnections.
Definition: nats.h:1713
void(* jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure)
Callback used to process asynchronous publish errors from JetStream.
Definition: nats.h:1781
void(* natsErrHandler)(natsConnection *nc, natsSubscription *subscription, natsStatus err, void *closure)
Callback used to notify the user of errors encountered while processing inbound messages.
Definition: nats.h:1587
natsStatus(* natsEvLoop_Detach)(void *userData)
Detach from the event loop.
Definition: nats.h:1643
natsStatus(* natsSignatureHandler)(char **customErrTxt, unsigned char **signature, int *signatureLength, const char *nonce, void *closure)
Callback used to sign a nonce sent by the server.
Definition: nats.h:1698
void(* stanConnectionLostHandler)(stanConnection *sc, const char *errorTxt, void *closure)
Callback used to notify the user of the permanent loss of the connection.
Definition: nats.h:1856
void(* natsConnectionHandler)(natsConnection *nc, void *closure)
Callback used to notify the user of asynchronous connection events.
Definition: nats.h:1578
void(* natsMsgHandler)(natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition: nats.h:1562
void(* stanPubAckHandler)(const char *guid, const char *error, void *closure)
Callback used to notify of an asynchronous publish result.
Definition: nats.h:1836
natsStatus(* natsEvLoop_ReadAddRemove)(void *userData, bool add)
Read event needs to be added or removed.
Definition: nats.h:1619
void(* stanMsgHandler)(stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition: nats.h:1847
NATS_EXTERN int natsConnection_Buffered(natsConnection *nc)
Returns the number of bytes to be sent to the server.
NATS_EXTERN void natsConnection_Close(natsConnection *nc)
Closes the connection.
NATS_EXTERN natsStatus natsConnection_Flush(natsConnection *nc)
Flushes the connection.
NATS_EXTERN bool natsConnection_IsDraining(natsConnection *nc)
Test if connection is draining.
NATS_EXTERN natsConnStatus natsConnection_Status(natsConnection *nc)
Returns the current state of the connection.
NATS_EXTERN natsStatus natsConnection_GetConnectedServerId(natsConnection *nc, char *buffer, size_t bufferSize)
Gets the server Id.
NATS_EXTERN bool natsConnection_IsClosed(natsConnection *nc)
Test if connection has been closed.
NATS_EXTERN natsStatus natsConnection_Drain(natsConnection *nc)
Drains the connection with default timeout.
NATS_EXTERN bool natsConnection_IsReconnecting(natsConnection *nc)
Test if connection is reconnecting.
NATS_EXTERN natsStatus natsConnection_GetStats(natsConnection *nc, natsStatistics *stats)
Gets the connection statistics.
NATS_EXTERN int64_t natsConnection_GetMaxPayload(natsConnection *nc)
Returns the maximum message payload.
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.
NATS_EXTERN natsStatus natsConnection_Connect(natsConnection **nc, natsOptions *options)
Connects to a NATS Server using the provided options.
NATS_EXTERN natsStatus natsConnection_GetClientID(natsConnection *nc, uint64_t *cid)
Gets the current client ID assigned by the server.
NATS_EXTERN natsStatus natsConnection_FlushTimeout(natsConnection *nc, int64_t timeout)
Flushes the connection with a given timeout.
NATS_EXTERN natsStatus natsConnection_GetLocalIPAndPort(natsConnection *nc, char **ip, int *port)
Returns the connection local IP and port.
NATS_EXTERN natsStatus natsConnection_GetRTT(natsConnection *nc, int64_t *rtt)
Returns the round trip time between this client and the server.
NATS_EXTERN void natsConnection_ProcessReadEvent(natsConnection *nc)
Process a read event when using external event loop.
natsStatus natsConnection_Reconnect(natsConnection *nc)
Drops the current connection, reconnects including re-subscribing.
NATS_EXTERN natsStatus natsConnection_GetLastError(natsConnection *nc, const char **lastError)
Gets the last connection error.
NATS_EXTERN natsStatus natsConnection_GetDiscoveredServers(natsConnection *nc, char ***servers, int *count)
Returns the list of discovered server URLs.
NATS_EXTERN natsStatus natsConnection_HasHeaderSupport(natsConnection *nc)
Returns if the connection to current server supports headers.
NATS_EXTERN void natsConnection_ProcessWriteEvent(natsConnection *nc)
Process a write event when using external event loop.
NATS_EXTERN natsStatus natsConnection_GetClientIP(natsConnection *nc, char **ip)
Returns the client's IP address as reported by the server.
NATS_EXTERN natsStatus natsConnection_DrainTimeout(natsConnection *nc, int64_t timeout)
Drains the connection with given timeout.
NATS_EXTERN natsStatus natsConnection_GetServers(natsConnection *nc, char ***servers, int *count)
Returns the list of server URLs known to this connection.
NATS_EXTERN natsStatus natsConnection_GetConnectedUrl(natsConnection *nc, char *buffer, size_t bufferSize)
Gets the URL of the currently connected server.
NATS_EXTERN natsStatus natsConnection_ConnectTo(natsConnection **nc, const char *urls)
Connects to a NATS Server using any of the URL from the given list.
NATS_EXTERN void natsConnection_Destroy(natsConnection *nc)
Destroys the connection object.
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.
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.
NATS_EXTERN natsStatus natsConnection_PublishMsg(natsConnection *nc, natsMsg *msg)
Publishes a message on a subject.
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.
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.
NATS_EXTERN natsStatus natsConnection_Publish(natsConnection *nc, const char *subj, const void *data, int dataLen)
Publishes data on a subject.
NATS_EXTERN natsStatus natsConnection_PublishString(natsConnection *nc, const char *subj, const char *str)
Publishes a string on a subject.
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.
NATS_EXTERN natsStatus natsConnection_SubscribeSync(natsSubscription **sub, natsConnection *nc, const char *subject)
Creates a synchronous subcription.
NATS_EXTERN natsStatus natsConnection_QueueSubscribe(natsSubscription **sub, natsConnection *nc, const char *subject, const char *queueGroup, natsMsgHandler cb, void *cbClosure)
Creates an asynchronous queue subscriber.
NATS_EXTERN natsStatus natsConnection_QueueSubscribeSync(natsSubscription **sub, natsConnection *nc, const char *subject, const char *queueGroup)
Creates a synchronous queue subscriber.
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.
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.
NATS_EXTERN natsStatus natsConnection_Subscribe(natsSubscription **sub, natsConnection *nc, const char *subject, natsMsgHandler cb, void *cbClosure)
Creates an asynchronous subscription.
NATS_EXTERN natsStatus natsInbox_Create(natsInbox **newInbox)
Creates an inbox.
NATS_EXTERN void natsInbox_Destroy(natsInbox *inbox)
Destroys the inbox.
NATS_EXTERN natsStatus jsPlacement_Init(jsPlacement *placement)
Initializes a placement configuration structure.
NATS_EXTERN void jsConsumerNamesList_Destroy(jsConsumerNamesList *list)
Destroys the consumer names list object.
NATS_EXTERN natsStatus js_GetConsumerInfo(jsConsumerInfo **ci, jsCtx *js, const char *stream, const char *consumer, jsOptions *opts, jsErrCode *errCode)
Retrieves information about a consumer.
NATS_EXTERN natsStatus jsConsumerConfig_Init(jsConsumerConfig *cc)
Initializes a consumer configuration structure.
NATS_EXTERN natsStatus jsRePublish_Init(jsRePublish *rp)
Initializes a republish structure.
NATS_EXTERN void jsStreamInfoList_Destroy(jsStreamInfoList *list)
Destroys the stream information list object.
NATS_EXTERN natsStatus js_DeleteStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Deletes a stream.
NATS_EXTERN void jsConsumerInfoList_Destroy(jsConsumerInfoList *list)
Destroys the consumer information list object.
NATS_EXTERN natsStatus js_DeleteConsumer(jsCtx *js, const char *stream, const char *consumer, jsOptions *opts, jsErrCode *errCode)
Deletes a consumer.
NATS_EXTERN natsStatus js_Streams(jsStreamInfoList **list, jsCtx *js, jsOptions *opts, jsErrCode *errCode)
Retrieves the list of all available streams.
NATS_EXTERN natsStatus js_PurgeStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Purges a stream.
NATS_EXTERN natsStatus js_AddStream(jsStreamInfo **si, jsCtx *js, jsStreamConfig *cfg, jsOptions *opts, jsErrCode *errCode)
Creates a stream.
NATS_EXTERN natsStatus js_DirectGetMsg(natsMsg **msg, jsCtx *js, const char *stream, jsOptions *opts, jsDirectGetMsgOptions *dgOpts)
Retrieves directly a JetStream message based on provided options.
NATS_EXTERN natsStatus js_GetLastMsg(natsMsg **msg, jsCtx *js, const char *stream, const char *subject, jsOptions *opts, jsErrCode *errCode)
Retrieves the last JetStream message from the stream for a given subject.
NATS_EXTERN natsStatus js_ConsumerNames(jsConsumerNamesList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Retrieves the list of all available consumer names for a stream.
NATS_EXTERN natsStatus js_EraseMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode)
Erases a message from the stream.
NATS_EXTERN natsStatus js_UpdateStream(jsStreamInfo **si, jsCtx *js, jsStreamConfig *cfg, jsOptions *opts, jsErrCode *errCode)
Updates a stream.
NATS_EXTERN void jsConsumerPauseResponse_Destroy(jsConsumerPauseResponse *cpr)
Destroys the PauseConsumer response object.
NATS_EXTERN void jsAccountInfo_Destroy(jsAccountInfo *ai)
Destroys the account information object.
NATS_EXTERN natsStatus jsStreamSource_Init(jsStreamSource *source)
Initializes a stream source configuration structure.
NATS_EXTERN natsStatus jsExternalStream_Init(jsExternalStream *external)
Initializes an external stream configuration structure.
NATS_EXTERN natsStatus jsDirectGetMsgOptions_Init(jsDirectGetMsgOptions *opts)
Initializes a direct get message options structure.
NATS_EXTERN void jsStreamInfo_Destroy(jsStreamInfo *si)
Destroys the stream information object.
NATS_EXTERN natsStatus js_GetStreamInfo(jsStreamInfo **si, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Retreives information from a stream.
NATS_EXTERN void jsConsumerInfo_Destroy(jsConsumerInfo *ci)
Destroys the consumer information object.
NATS_EXTERN natsStatus js_GetMsg(natsMsg **msg, jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode)
Retrieves a JetStream message from the stream by sequence.
NATS_EXTERN natsStatus js_PauseConsumer(jsConsumerPauseResponse **new_cpr, jsCtx *js, const char *stream, const char *consumer, uint64_t pauseUntil, jsOptions *opts, jsErrCode *errCode)
Pauses a consumer.
NATS_EXTERN natsStatus jsStreamConfig_Init(jsStreamConfig *cfg)
Initializes a streaming configuration structure.
NATS_EXTERN natsStatus js_StreamNames(jsStreamNamesList **list, jsCtx *js, jsOptions *opts, jsErrCode *errCode)
Retrieves the list of all available stream names.
NATS_EXTERN natsStatus js_GetAccountInfo(jsAccountInfo **ai, jsCtx *js, jsOptions *opts, jsErrCode *errCode)
Retrieves information about the JetStream usage from an account.
NATS_EXTERN natsStatus js_UpdateConsumer(jsConsumerInfo **ci, jsCtx *js, const char *stream, jsConsumerConfig *cfg, jsOptions *opts, jsErrCode *errCode)
Updates a JetStream consumer.
NATS_EXTERN natsStatus js_DeleteMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode)
Deletes a message from the stream.
NATS_EXTERN natsStatus js_Consumers(jsConsumerInfoList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Retrieves the list of all available consumers for a stream.
NATS_EXTERN natsStatus js_AddConsumer(jsConsumerInfo **ci, jsCtx *js, const char *stream, jsConsumerConfig *cfg, jsOptions *opts, jsErrCode *errCode)
Adds a JetStream consumer.
NATS_EXTERN void jsStreamNamesList_Destroy(jsStreamNamesList *list)
Destroys the stream names list object.
NATS_EXTERN natsStatus jsOptions_Init(jsOptions *opts)
Initializes a streaming context options structure.
NATS_EXTERN natsStatus natsConnection_JetStream(jsCtx **js, natsConnection *nc, jsOptions *opts)
Returns a new JetStream context.
NATS_EXTERN void jsCtx_Destroy(jsCtx *js)
Destroys the JetStream context.
NATS_EXTERN uint64_t natsMsg_GetSequence(natsMsg *msg)
Returns the sequence number of this JetStream message.
NATS_EXTERN int64_t natsMsg_GetTime(natsMsg *msg)
Returns the timestamp (in UTC) of this JetStream message.
NATS_EXTERN natsStatus natsMsg_NakWithDelay(natsMsg *msg, int64_t delay, jsOptions *opts)
Negatively acknowledges a message.
NATS_EXTERN natsStatus natsMsg_Nak(natsMsg *msg, jsOptions *opts)
Negatively acknowledges a message.
NATS_EXTERN natsStatus natsMsg_GetMetaData(jsMsgMetaData **new_meta, natsMsg *msg)
Returns metadata from this JetStream message.
NATS_EXTERN natsStatus natsMsg_InProgress(natsMsg *msg, jsOptions *opts)
Resets redelivery timer on the server.
NATS_EXTERN natsStatus natsMsg_Ack(natsMsg *msg, jsOptions *opts)
Acknowledges a message.
NATS_EXTERN natsStatus natsMsg_Term(natsMsg *msg, jsOptions *opts)
Abandon this message.
NATS_EXTERN void jsMsgMetaData_Destroy(jsMsgMetaData *meta)
Destroys the message metadata object.
NATS_EXTERN natsStatus natsMsg_AckSync(natsMsg *msg, jsOptions *opts, jsErrCode *errCode)
Acknowledges a message and wait for a confirmation.
NATS_EXTERN natsStatus js_PublishAsync(jsCtx *js, const char *subj, const void *data, int dataLen, jsPubOptions *opts)
Publishes data to JetStream but does not wait for a jsPubAck.
NATS_EXTERN natsStatus js_PublishAsyncComplete(jsCtx *js, jsPubOptions *opts)
Wait for all outstanding messages to be acknowledged.
NATS_EXTERN natsStatus js_PublishAsyncGetPendingList(natsMsgList *pending, jsCtx *js)
Returns the list of pending messages published asynchronously.
NATS_EXTERN natsStatus js_PublishMsg(jsPubAck **pubAck, jsCtx *js, natsMsg *msg, jsPubOptions *opts, jsErrCode *errCode)
Publishes a message to JetStream.
NATS_EXTERN void jsPubAck_Destroy(jsPubAck *pubAck)
Destroys the publish acknowledgment object.
NATS_EXTERN natsStatus js_PublishMsgAsync(jsCtx *js, natsMsg **msg, jsPubOptions *opts)
Publishes a message to JetStream but does not wait for a jsPubAck.
NATS_EXTERN natsStatus js_Publish(jsPubAck **pubAck, jsCtx *js, const char *subj, const void *data, int dataLen, jsPubOptions *opts, jsErrCode *errCode)
Publishes data on a subject to JetStream.
NATS_EXTERN natsStatus jsPubOptions_Init(jsPubOptions *opts)
Initializes a publish options structure.
NATS_EXTERN natsStatus natsSubscription_GetSequenceMismatch(jsConsumerSequenceMismatch *csm, natsSubscription *sub)
Returns the consumer sequence mismatch information.
NATS_EXTERN natsStatus jsFetchRequest_Init(jsFetchRequest *request)
Initializes a fetch request options structure.
NATS_EXTERN natsStatus jsSubOptions_Init(jsSubOptions *opts)
Initializes a subscribe options structure.
NATS_EXTERN natsStatus natsSubscription_FetchRequest(natsMsgList *list, natsSubscription *sub, jsFetchRequest *request)
Fetches messages for a pull subscription with a complete request configuration.
NATS_EXTERN natsStatus js_PullSubscribeAsync(natsSubscription **newsub, jsCtx *js, const char *subject, const char *durable, natsMsgHandler msgCB, void *msgCBClosure, jsOptions *jsOpts, jsSubOptions *opts, jsErrCode *errCode)
Starts a Pull based JetStream subscription, and delivers messages to a user callback asynchronously.
NATS_EXTERN natsStatus js_Subscribe(natsSubscription **sub, jsCtx *js, const char *subject, natsMsgHandler cb, void *cbClosure, jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode)
Create an asynchronous subscription.
NATS_EXTERN natsStatus natsSubscription_GetConsumerInfo(jsConsumerInfo **ci, natsSubscription *sub, jsOptions *opts, jsErrCode *errCode)
Returns the jsConsumerInfo associated with this subscription.
NATS_EXTERN natsStatus js_PullSubscribe(natsSubscription **sub, jsCtx *js, const char *subject, const char *durable, jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode)
Create a pull subscriber.
NATS_EXTERN natsStatus js_SubscribeSync(natsSubscription **sub, jsCtx *js, const char *subject, jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode)
Create a synchronous subscription.
NATS_EXTERN natsStatus js_SubscribeSyncMulti(natsSubscription **sub, jsCtx *js, const char **subjects, int numSubjects, jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode)
Create an asynchronous subscription to multiple subjects.
NATS_EXTERN natsStatus js_SubscribeMulti(natsSubscription **sub, jsCtx *js, const char **subjects, int numSubjects, natsMsgHandler cb, void *cbClosure, jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode)
Create an asynchronous subscription to multiple subjects.
NATS_EXTERN natsStatus natsSubscription_Fetch(natsMsgList *list, natsSubscription *sub, int batch, int64_t timeout, jsErrCode *errCode)
Fetches messages for a pull subscription.
NATS_EXTERN kvOperation kvEntry_Operation(kvEntry *e)
Returns the type of operation of this value.
NATS_EXTERN uint64_t kvEntry_Delta(kvEntry *e)
Returns the distance from the latest value.
NATS_EXTERN uint64_t kvEntry_Revision(kvEntry *e)
Returns the unique sequence for this value.
NATS_EXTERN const char * kvEntry_Key(kvEntry *e)
Returns the name of the key that was retrieved.
NATS_EXTERN int64_t kvEntry_Created(kvEntry *e)
Returns the time (in UTC) the data was put in the bucket.
NATS_EXTERN const char * kvEntry_Bucket(kvEntry *e)
Returns the name of the bucket the data was loaded from.
NATS_EXTERN const char * kvEntry_ValueString(kvEntry *e)
Returns the value, as a string, for this key.
NATS_EXTERN const void * kvEntry_Value(kvEntry *e)
Returns the value for this key.
NATS_EXTERN void kvEntry_Destroy(kvEntry *e)
Destroys the KeyValue entry object.
NATS_EXTERN int kvEntry_ValueLen(kvEntry *e)
Returns the value length for this key.
NATS_EXTERN void kvKeysList_Destroy(kvKeysList *list)
Destroys this list of KeyValue store key strings.
NATS_EXTERN natsStatus kvStore_UpdateString(uint64_t *rev, kvStore *kv, const char *key, const char *data, uint64_t last)
Updates the value (as a string) for the key into the store if and only if the latest revision matches...
NATS_EXTERN natsStatus kvStore_Put(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len)
Places the new value for the key into the store.
NATS_EXTERN natsStatus kvPurgeOptions_Init(kvPurgeOptions *opts)
Initializes a KeyValue purge options structure.
NATS_EXTERN natsStatus kvStore_Get(kvEntry **new_entry, kvStore *kv, const char *key)
Returns the latest entry for the key.
NATS_EXTERN natsStatus kvStore_Watch(kvWatcher **new_watcher, kvStore *kv, const char *keys, kvWatchOptions *opts)
Returns a watcher for any updates to keys that match the keys argument.
NATS_EXTERN natsStatus kvStore_PurgeDeletes(kvStore *kv, kvPurgeOptions *opts)
Purge and removes delete markers.
NATS_EXTERN natsStatus kvStore_Purge(kvStore *kv, const char *key, kvPurgeOptions *opts)
Deletes a key by placing a purge marker and removing all revisions.
NATS_EXTERN natsStatus kvStore_WatchMulti(kvWatcher **new_watcher, kvStore *kv, const char **keys, int numKeys, kvWatchOptions *opts)
Returns a watcher for any updates to keys that match one of the keys argument.
NATS_EXTERN natsStatus kvStore_Create(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len)
Places the value for the key into the store if and only if the key does not exist.
NATS_EXTERN natsStatus kvStore_CreateString(uint64_t *rev, kvStore *kv, const char *key, const char *data)
Places the value (as a string) for the key into the store if and only if the key does not exist.
NATS_EXTERN natsStatus kvStore_History(kvEntryList *list, kvStore *kv, const char *key, kvWatchOptions *opts)
Returns all historical entries for the key.
NATS_EXTERN natsStatus kvStore_Keys(kvKeysList *list, kvStore *kv, kvWatchOptions *opts)
Returns all keys in the bucket.
NATS_EXTERN natsStatus kvStore_Delete(kvStore *kv, const char *key)
Deletes a key by placing a delete marker and leaving all revisions.
NATS_EXTERN natsStatus kvWatchOptions_Init(kvWatchOptions *opts)
Initializes a KeyValue watcher options structure.
NATS_EXTERN natsStatus kvStore_PutString(uint64_t *rev, kvStore *kv, const char *key, const char *data)
Places the new value (as a string) for the key into the store.
NATS_EXTERN const char * kvStore_Bucket(kvStore *kv)
Returns the bucket name of this KeyValue store object.
NATS_EXTERN natsStatus kvStore_GetRevision(kvEntry **new_entry, kvStore *kv, const char *key, uint64_t revision)
Returns the entry at the specific revision for the key.
NATS_EXTERN natsStatus kvStore_Status(kvStatus **new_status, kvStore *kv)
Returns the status and configuration of a bucket.
NATS_EXTERN natsStatus kvStore_Update(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len, uint64_t last)
Updates the value for the key into the store if and only if the latest revision matches.
NATS_EXTERN natsStatus kvStore_KeysWithFilters(kvKeysList *list, kvStore *kv, const char **filters, int numFilters, kvWatchOptions *opts)
Returns all keys in the bucket which matches the list of subject like filters.
NATS_EXTERN void kvEntryList_Destroy(kvEntryList *list)
Destroys this list of KeyValue store entries.
NATS_EXTERN natsStatus kvStore_WatchAll(kvWatcher **new_watcher, kvStore *kv, kvWatchOptions *opts)
Returns a watcher for any updates to any keys of the KeyValue store bucket.
NATS_EXTERN natsStatus kvConfig_Init(kvConfig *cfg)
Initializes a KeyValue configuration structure.
NATS_EXTERN natsStatus js_KeyValue(kvStore **new_kv, jsCtx *js, const char *bucket)
Looks-up and binds to an existing KeyValue store.
NATS_EXTERN natsStatus js_DeleteKeyValue(jsCtx *js, const char *bucket)
Deletes a KeyValue store.
NATS_EXTERN void kvStore_Destroy(kvStore *kv)
Destroys a KeyValue store object.
NATS_EXTERN natsStatus js_CreateKeyValue(kvStore **new_kv, jsCtx *js, kvConfig *cfg)
Creates a KeyValue store with a given configuration.
NATS_EXTERN uint64_t kvStatus_Values(kvStatus *sts)
Returns how many messages are in the bucket, including historical values.
NATS_EXTERN void kvStatus_Destroy(kvStatus *sts)
Destroys the KeyValue status object.
NATS_EXTERN uint64_t kvStatus_Bytes(kvStatus *sts)
Returns the size (in bytes) of this bucket.
NATS_EXTERN int64_t kvStatus_Replicas(kvStatus *sts)
Returns the number of replicas to keep for a bucket.
NATS_EXTERN const char * kvStatus_Bucket(kvStatus *sts)
Returns the bucket name.
NATS_EXTERN int64_t kvStatus_TTL(kvStatus *sts)
Returns how long the bucket keeps values for.
NATS_EXTERN int64_t kvStatus_History(kvStatus *sts)
Returns the configured history kept per key.
NATS_EXTERN void kvWatcher_Destroy(kvWatcher *w)
Destroys the KeyValue watcher object.
NATS_EXTERN natsStatus kvWatcher_Next(kvEntry **new_entry, kvWatcher *w, int64_t timeout)
Returns the next entry for this watcher.
NATS_EXTERN natsStatus kvWatcher_Stop(kvWatcher *w)
Stops the watcher.
NATS_EXTERN const char * nats_GetLastError(natsStatus *status)
Returns the calling thread's last known error.
NATS_EXTERN natsStatus nats_Open(int64_t lockSpinCount)
Initializes the library.
NATS_EXTERN void nats_PrintLastErrorStack(FILE *file)
Prints the calling thread's last known error stack into the file.
NATS_EXTERN uint32_t nats_GetVersionNumber(void)
Returns the Library's version as a number.
NATS_EXTERN bool nats_CheckCompatibility(void)
Check that the header is compatible with the library.
NATS_EXTERN int64_t nats_Now(void)
Gives the current time in milliseconds.
NATS_EXTERN natsStatus nats_SetMessageDeliveryPoolSize(int max)
Sets the maximum size of the global message delivery thread pool.
natsStatus nats_OpenWithConfig(natsClientConfig *config)
Initializes the library.
NATS_EXTERN natsStatus nats_GetLastErrorStack(char *buffer, size_t bufLen)
Returns the calling thread's last known error stack.
NATS_EXTERN int64_t nats_NowInNanoSeconds(void)
Gives the current time in nanoseconds.
NATS_EXTERN void nats_Sleep(int64_t sleepTime)
Sleeps for a given number of milliseconds.
NATS_EXTERN void nats_Close(void)
Tear down the library.
NATS_EXTERN natsStatus nats_CloseAndWait(int64_t timeout)
Tear down the library and wait for all resources to be released.
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.
NATS_EXTERN const char * nats_GetVersion(void)
Returns the Library's version.
NATS_EXTERN void nats_ReleaseThreadMemory(void)
Release thread-local memory possibly allocated by the library.
void(* microErrorHandler)(microService *m, microEndpoint *ep, natsStatus s)
Callback type for async error notifications.
Definition: nats.h:7745
microError *(* microRequestHandler)(microRequest *req)
Callback type for request processing.
Definition: nats.h:7721
void(* microDoneHandler)(microService *m)
Callback type for Done (service stopped) notifications.
Definition: nats.h:7758
NATS_EXTERN void microServiceInfo_Destroy(microServiceInfo *info)
Destroys a microServiceInfo object.
NATS_EXTERN void microServiceStats_Destroy(microServiceStats *stats)
Destroys a microServiceStats object.
NATS_EXTERN microError * micro_NewClient(microClient **new_client, natsConnection *nc, microClientConfig *cfg)
Creates a new microservice client.
NATS_EXTERN void microClient_Destroy(microClient *client)
Destroys a microservice client.
NATS_EXTERN microError * microClient_DoRequest(natsMsg **reply, microClient *client, const char *subject, const char *data, int data_len)
Sends a request to a microservice and receives the response.
NATS_EXTERN void microError_Destroy(microError *err)
destroys a microError.
NATS_EXTERN microError * micro_ErrorFromStatus(natsStatus s)
Wraps a NATS status into a microError, if not a NATS_OK.
NATS_EXTERN natsStatus microError_Status(microError *err)
Returns the NATS status associated with the error.
NATS_EXTERN microError * micro_Errorf(const char *format,...)
creates a new microError, with a printf-like formatted message.
NATS_EXTERN microError * microError_Wrapf(microError *err, const char *format,...)
Wraps an exising microError with a higher printf-like formatted message.
NATS_EXTERN int microError_Code(microError *err)
returns the int code of the error.
NATS_EXTERN microError * micro_ErrorfCode(int code, const char *format,...)
creates a new microError, with a code and a printf-like formatted message.
NATS_EXTERN const char * microError_String(microError *err, char *buf, size_t len)
Returns a printable string with the error message.
NATS_EXTERN microError * microGroup_AddEndpoint(microGroup *g, microEndpointConfig *config)
Adds an endpoint to a microGroup and starts listening for messages.
NATS_EXTERN microError * microGroup_AddGroup(microGroup **new_group, microGroup *parent, microGroupConfig *config)
Adds a sub-group to microGroup.
NATS_EXTERN microError * microRequest_AddHeader(microRequest *req, const char *key, const char *value)
Adds a header to the underlying NATS request message.
NATS_EXTERN microError * microRequest_RespondCustom(microRequest *req, microError *err, const char *data, size_t len)
Respond to a message, with an OK or an error.
NATS_EXTERN microError * microRequest_SetHeader(microRequest *req, const char *key, const char *value)
Add value to the header associated with key in the NATS message underlying the request.
NATS_EXTERN microError * microRequest_RespondError(microRequest *req, microError *err)
Respond to a request with a simple error.
NATS_EXTERN microError * microRequest_GetHeaderKeys(microRequest *req, const char ***keys, int *count)
Gets the list of all header keys in the NATS message underlying the request.
NATS_EXTERN const char * microRequest_GetReply(microRequest *req)
Returns the reply subject set in this message.
NATS_EXTERN int microRequest_GetDataLength(microRequest *req)
Returns the number of data bytes in the the request.
NATS_EXTERN const char * microRequest_GetData(microRequest *req)
Returns the data in the the request, as a byte array.
NATS_EXTERN natsConnection * microRequest_GetConnection(microRequest *req)
Returns the connection associated with the request.
NATS_EXTERN const char * microRequest_GetSubject(microRequest *req)
Returns the subject of the request message.
NATS_EXTERN natsMsg * microRequest_GetMsg(microRequest *req)
Get the NATS message underlying the request.
NATS_EXTERN microError * microRequest_GetHeaderValue(microRequest *req, const char *key, const char **value)
Get the header entry associated with key from the NATS message underlying the request.
NATS_EXTERN void * microRequest_GetServiceState(microRequest *req)
Returns the pointer to the user-provided service state.
NATS_EXTERN microError * microRequest_Respond(microRequest *req, const char *data, size_t len)
Respond to a request, on the same NATS connection.
NATS_EXTERN microError * microRequest_GetHeaderValues(microRequest *req, const char *key, const char ***values, int *count)
Get all header values associated with key from the NATS message underlying the request.
NATS_EXTERN microService * microRequest_GetService(microRequest *req)
Returns the pointer to the microservice associated with the request.
NATS_EXTERN void * microRequest_GetEndpointState(microRequest *req)
Returns the pointer to the user-provided endpoint state, if the request is associated with an endpoin...
NATS_EXTERN microError * microRequest_DeleteHeader(microRequest *req, const char *key)
Deletes a header from the underlying NATS request message.
NATS_EXTERN microError * microService_AddEndpoint(microService *m, microEndpointConfig *config)
Adds an endpoint to a microservice and starts listening for messages.
NATS_EXTERN microError * microService_AddGroup(microGroup **new_group, microService *m, microGroupConfig *config)
Adds an group (prefix) to a microservice.
NATS_EXTERN void * microService_GetState(microService *m)
Returns the pointer to state data (closure). It is originally provided in microServiceConfig....
NATS_EXTERN natsConnection * microService_GetConnection(microService *m)
Returns the connection associated with the service. If the service was successfully started,...
NATS_EXTERN microError * microService_Stop(microService *m)
Stops a running microservice.
NATS_EXTERN microError * microService_Run(microService *m)
Waits for a microservice to stop.
NATS_EXTERN microError * microService_GetInfo(microServiceInfo **new_info, microService *m)
Returns a microServiceInfo for a microservice.
NATS_EXTERN microError * micro_AddService(microService **new_microservice, natsConnection *nc, microServiceConfig *config)
Creates and starts a new microservice.
NATS_EXTERN bool microService_IsStopped(microService *m)
Checks if the service is stopped.
NATS_EXTERN microError * microService_Destroy(microService *m)
Destroys a microservice, stopping it first if needed.
NATS_EXTERN microError * microService_GetStats(microServiceStats **new_stats, microService *m)
Returns run-time statistics for a microservice.
struct micro_client_s microClient
The Microservice client.
Definition: nats.h:7568
struct micro_group_s microGroup
a collection of endpoints and other groups, with a common prefix to their subjects and names.
Definition: nats.h:7637
struct micro_request_s microRequest
a request received by a microservice endpoint.
Definition: nats.h:7652
struct micro_error_s microError
the Microservice error object.
Definition: nats.h:7628
struct __for_forward_compatibility_only microClientConfig
The Microservice configuration object. For forward compatibility only.
Definition: nats.h:7573
NATS_EXTERN microError * micro_ErrorInvalidArg
NATS_EXTERN microError * micro_ErrorOutOfMemory
struct micro_endpoint_s microEndpoint
microEndpoint represents a microservice endpoint.
Definition: nats.h:7584
struct micro_service_s microService
the main object for a configured microservice.
Definition: nats.h:7665
NATS_EXTERN natsStatus natsMsg_Create(natsMsg **newMsg, const char *subj, const char *reply, const char *data, int dataLen)
Creates a natsMsg object.
NATS_EXTERN void natsMsgList_Destroy(natsMsgList *list)
Destroys this list of messages.
NATS_EXTERN int natsMsg_GetDataLength(const natsMsg *msg)
Returns the message length.
NATS_EXTERN natsStatus natsMsgHeader_Add(natsMsg *msg, const char *key, const char *value)
Add value to the header associated with key.
NATS_EXTERN bool natsMsg_IsNoResponders(natsMsg *msg)
Indicates if this message is a "no responders" message from the server.
NATS_EXTERN natsStatus natsMsgHeader_Keys(natsMsg *msg, const char ***keys, int *count)
Get all header keys.
NATS_EXTERN const char * natsMsg_GetData(const natsMsg *msg)
Returns the message payload.
NATS_EXTERN void natsMsg_Destroy(natsMsg *msg)
Destroys the message object.
NATS_EXTERN natsStatus natsMsgHeader_Get(natsMsg *msg, const char *key, const char **value)
Get the header entry associated with key.
NATS_EXTERN natsStatus natsMsgHeader_Delete(natsMsg *msg, const char *key)
Delete the value(s) associated with key.
NATS_EXTERN natsStatus natsMsgHeader_Values(natsMsg *msg, const char *key, const char ***values, int *count)
Get all header values associated with key.
NATS_EXTERN const char * natsMsg_GetSubject(const natsMsg *msg)
Returns the subject set in this message.
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.
NATS_EXTERN const char * natsMsg_GetReply(const natsMsg *msg)
Returns the reply set in this message.
NATS_EXTERN natsStatus natsOptions_SetNKey(natsOptions *opts, const char *pubKey, natsSignatureHandler sigCB, void *sigClosure)
Sets the NKey public key and signature callback.
NATS_EXTERN natsStatus natsOptions_SetExpectedHostname(natsOptions *opts, const char *hostname)
Sets the server certificate's expected hostname.
NATS_EXTERN natsStatus natsOptions_SetErrorHandler(natsOptions *opts, natsErrHandler errHandler, void *closure)
Sets the error handler for asynchronous events.
NATS_EXTERN natsStatus natsOptions_SetTimeout(natsOptions *opts, int64_t timeout)
Sets the (re)connect process timeout.
NATS_EXTERN natsStatus natsOptions_DisableNoResponders(natsOptions *opts, bool disabled)
Enable/Disable the "no responders" feature.
NATS_EXTERN natsStatus natsOptions_SetIOBufSize(natsOptions *opts, int ioBufSize)
Sets the size of the internal read/write buffers.
NATS_EXTERN natsStatus natsOptions_SetName(natsOptions *opts, const char *name)
Sets the name.
NATS_EXTERN natsStatus natsOptions_SetRetryOnFailedConnect(natsOptions *opts, bool retry, natsConnectionHandler connectedCb, void *closure)
Indicates if initial connect failure should be retried or not.
NATS_EXTERN natsStatus natsOptions_SetTokenHandler(natsOptions *opts, natsTokenHandler tokenCb, void *closure)
Sets the tokenCb to use whenever a token is needed.
NATS_EXTERN natsStatus natsOptions_SetReconnectedCB(natsOptions *opts, natsConnectionHandler reconnectedCb, void *closure)
Sets the callback to be invoked when the connection has reconnected.
NATS_EXTERN natsStatus natsOptions_SetPedantic(natsOptions *opts, bool pedantic)
Sets the pedantic mode.
NATS_EXTERN natsStatus natsOptions_SetReconnectWait(natsOptions *opts, int64_t reconnectWait)
Sets the time between reconnect attempts.
NATS_EXTERN natsStatus natsOptions_SetCipherSuites(natsOptions *opts, const char *ciphers)
Sets the list of available ciphers for TLSv1.3.
NATS_EXTERN natsStatus natsOptions_LoadCATrustedCertificates(natsOptions *opts, const char *fileName)
Loads the trusted CA certificates from a file.
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.
NATS_EXTERN natsStatus natsOptions_LoadCertificatesChain(natsOptions *opts, const char *certsFileName, const char *keyFileName)
Loads the certificate chain from a file, using the given key.
NATS_EXTERN natsStatus natsOptions_SetAllowReconnect(natsOptions *opts, bool allow)
Indicates if the connection will be allowed to reconnect.
NATS_EXTERN natsStatus natsOptions_SetURL(natsOptions *opts, const char *url)
Sets the URL to connect to.
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.
NATS_EXTERN natsStatus natsOptions_SetNoEcho(natsOptions *opts, bool noEcho)
Sets if connection receives its own messages.
NATS_EXTERN natsStatus natsOptions_SetLameDuckModeCB(natsOptions *opts, natsConnectionHandler lameDuckCb, void *closure)
Sets the callback to be invoked when server enters lame duck mode.
NATS_EXTERN natsStatus natsOptions_SetCiphers(natsOptions *opts, const char *ciphers)
Sets the list of available ciphers.
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.
NATS_EXTERN natsStatus natsOptions_SetMessageBufferPadding(natsOptions *opts, int paddingSize)
Sets a custom padding when allocating buffer for incoming messages.
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.
NATS_EXTERN natsStatus natsOptions_SetUserCredentialsFromMemory(natsOptions *opts, const char *jwtAndSeedContent)
Sets JWT handler and handler to sign nonce that uses seed.
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.
NATS_EXTERN natsStatus natsOptions_Create(natsOptions **newOpts)
Creates a natsOptions object.
NATS_EXTERN natsStatus natsOptions_SetNKeyFromSeed(natsOptions *opts, const char *pubKey, const char *seedFile)
Sets the NKey public key and its seed file.
NATS_EXTERN natsStatus natsOptions_SkipServerVerification(natsOptions *opts, bool skip)
Switch server certificate verification.
NATS_EXTERN natsStatus natsOptions_UseOldRequestStyle(natsOptions *opts, bool useOldStyle)
Switches the use of old style requests.
NATS_EXTERN natsStatus natsOptions_SetMaxPendingBytes(natsOptions *opts, int64_t maxPending)
Sets the maximum number of pending bytes per subscription.
NATS_EXTERN natsStatus natsOptions_IPResolutionOrder(natsOptions *opts, int order)
Dictates the order in which host name are resolved during connect.
NATS_EXTERN natsStatus natsOptions_SetIgnoreDiscoveredServers(natsOptions *opts, bool ignore)
Sets if the library should ignore or not discovered servers.
NATS_EXTERN natsStatus natsOptions_SetSendAsap(natsOptions *opts, bool sendAsap)
Sets if Publish calls should send data right away.
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.
NATS_EXTERN void natsOptions_Destroy(natsOptions *opts)
Destroys a natsOptions object.
NATS_EXTERN natsStatus natsOptions_SetMaxPendingMsgs(natsOptions *opts, int maxPending)
Sets the maximum number of pending messages per subscription.
NATS_EXTERN natsStatus natsOptions_SetReconnectBufSize(natsOptions *opts, int reconnectBufSize)
Sets the size of the backing buffer used during reconnect.
NATS_EXTERN natsStatus natsOptions_SetVerbose(natsOptions *opts, bool verbose)
Sets the verbose mode.
NATS_EXTERN natsStatus natsOptions_SetSecure(natsOptions *opts, bool secure)
Sets the secure mode.
NATS_EXTERN natsStatus natsOptions_SetNoRandomize(natsOptions *opts, bool noRandomize)
Indicate if the servers list should be randomized.
NATS_EXTERN natsStatus natsOptions_SetWriteDeadline(natsOptions *opts, int64_t deadline)
Sets the write deadline.
NATS_EXTERN natsStatus natsOptions_SetMaxPingsOut(natsOptions *opts, int maxPingsOut)
Sets the limit of outstanding PINGs without corresponding PONGs.
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.
NATS_EXTERN natsStatus natsOptions_SetMaxReconnect(natsOptions *opts, int maxReconnect)
Sets the maximum number of reconnect attempts.
NATS_EXTERN natsStatus natsOptions_SetDiscoveredServersCB(natsOptions *opts, natsConnectionHandler discoveredServersCb, void *closure)
Sets the callback to be invoked when new servers are discovered.
NATS_EXTERN natsStatus natsOptions_UseGlobalMessageDelivery(natsOptions *opts, bool global)
Switch on/off the use of a central message delivery thread pool.
NATS_EXTERN natsStatus natsOptions_SetCustomInboxPrefix(natsOptions *opts, const char *inboxPrefix)
Sets a custom inbox prefix.
NATS_EXTERN natsStatus natsOptions_TLSHandshakeFirst(natsOptions *opts)
Performs TLS handshake first.
NATS_EXTERN natsStatus natsOptions_SetServers(natsOptions *opts, const char **servers, int serversCount)
Set the list of servers to try to (re)connect to.
NATS_EXTERN natsStatus natsOptions_SetToken(natsOptions *opts, const char *token)
Sets the token to use when not specified in the URL.
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.
NATS_EXTERN natsStatus natsOptions_SetFailRequestsOnDisconnect(natsOptions *opts, bool failRequests)
Fails pending requests on disconnect event.
NATS_EXTERN natsStatus natsOptions_SetPingInterval(natsOptions *opts, int64_t interval)
Sets the ping interval.
NATS_EXTERN natsStatus natsOptions_SetCertificatesChain(natsOptions *opts, const char *cert, const char *key)
Sets the client certificate and key.
NATS_EXTERN natsStatus natsOptions_SetCATrustedCertificates(natsOptions *opts, const char *certificates)
Sets the trusted CA certificates from memory.
NATS_EXTERN natsStatus stanConnection_GetNATSConnection(stanConnection *sc, natsConnection **nc)
Returns the underlying NATS Connection.
NATS_EXTERN void stanConnection_ReleaseNATSConnection(stanConnection *sc)
Releases the NATS Connection.
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.
NATS_EXTERN natsStatus stanConnection_Close(stanConnection *sc)
Closes the connection.
NATS_EXTERN natsStatus stanConnection_Destroy(stanConnection *sc)
Destroys the connection object.
NATS_EXTERN natsStatus stanConnOptions_SetDiscoveryPrefix(stanConnOptions *opts, const char *prefix)
Sets the subject prefix the library sends the connect request to.
NATS_EXTERN natsStatus stanConnOptions_SetConnectionLostHandler(stanConnOptions *opts, stanConnectionLostHandler handler, void *closure)
Sets the connection lost handler.
NATS_EXTERN natsStatus stanConnOptions_SetMaxPubAcksInflight(stanConnOptions *opts, int maxPubAcksInflight, float percentage)
Sets the maximum number of published messages without outstanding ACKs from the server.
NATS_EXTERN natsStatus stanConnOptions_SetPubAckWait(stanConnOptions *opts, int64_t wait)
Sets the timeout for waiting for an ACK for a published message.
NATS_EXTERN natsStatus stanConnOptions_SetURL(stanConnOptions *opts, const char *url)
Sets the URL to connect to.
NATS_EXTERN natsStatus stanConnOptions_SetConnectionWait(stanConnOptions *opts, int64_t wait)
Sets the timeout for establishing a connection.
NATS_EXTERN void stanConnOptions_Destroy(stanConnOptions *opts)
Destroys a stanConnOptions object.
NATS_EXTERN natsStatus stanConnOptions_SetPings(stanConnOptions *opts, int interval, int maxOut)
Sets the ping interval and max out values.
NATS_EXTERN natsStatus stanConnOptions_SetNATSOptions(stanConnOptions *opts, natsOptions *nOpts)
Sets the NATS Options to use to create the connection.
NATS_EXTERN natsStatus stanConnOptions_Create(stanConnOptions **newOpts)
Creates a stanConnOptions object.
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.
NATS_EXTERN natsStatus stanConnection_Publish(stanConnection *sc, const char *channel, const void *data, int dataLen)
Publishes data on a channel.
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.
NATS_EXTERN natsStatus stanConnection_Subscribe(stanSubscription **sub, stanConnection *sc, const char *channel, stanMsgHandler cb, void *cbClosure, stanSubOptions *options)
Creates a subscription.
NATS_EXTERN const char * stanMsg_GetData(const stanMsg *msg)
Returns the message payload.
NATS_EXTERN int64_t stanMsg_GetTimestamp(const stanMsg *msg)
Returns the message's timestamp.
NATS_EXTERN int stanMsg_GetDataLength(const stanMsg *msg)
Returns the message length.
NATS_EXTERN bool stanMsg_IsRedelivered(const stanMsg *msg)
Returns the message's redelivered flag.
NATS_EXTERN uint64_t stanMsg_GetSequence(const stanMsg *msg)
Returns the message's sequence number.
NATS_EXTERN void stanMsg_Destroy(stanMsg *msg)
Destroys the message object.
NATS_EXTERN natsStatus stanSubscription_AckMsg(stanSubscription *sub, stanMsg *msg)
Acknowledge a message.
NATS_EXTERN void stanSubscription_Destroy(stanSubscription *sub)
Destroys the subscription.
NATS_EXTERN natsStatus stanSubscription_SetOnCompleteCB(stanSubscription *sub, natsOnCompleteCB cb, void *closure)
Sets a completion callback.
NATS_EXTERN natsStatus stanSubscription_Close(stanSubscription *sub)
Closes the subscription.
NATS_EXTERN natsStatus stanSubscription_Unsubscribe(stanSubscription *sub)
Permanently remove a subscription.
NATS_EXTERN void stanSubOptions_Destroy(stanSubOptions *opts)
Destroys a stanSubOptions object.
NATS_EXTERN natsStatus stanSubOptions_StartAtTimeDelta(stanSubOptions *opts, int64_t delta)
Sets the desired start position based on the given delta.
NATS_EXTERN natsStatus stanSubOptions_SetMaxInflight(stanSubOptions *opts, int maxInflight)
Sets the the maximum number of messages the cluster will send without an ACK.
NATS_EXTERN natsStatus stanSubOptions_StartAtSequence(stanSubOptions *opts, uint64_t seq)
Sets the desired start position based on the given sequence number.
NATS_EXTERN natsStatus stanSubOptions_SetManualAckMode(stanSubOptions *opts, bool manual)
Sets the subscription's acknowledgment mode.
NATS_EXTERN natsStatus stanSubOptions_StartWithLastReceived(stanSubOptions *opts)
The subscription should start with the last message in the channel.
NATS_EXTERN natsStatus stanSubOptions_SetDurableName(stanSubOptions *opts, const char *durableName)
Sets the Durable Name for this subscription.
NATS_EXTERN natsStatus stanSubOptions_StartAtTime(stanSubOptions *opts, int64_t time)
Sets the desired start position based on the given time.
NATS_EXTERN natsStatus stanSubOptions_DeliverAllAvailable(stanSubOptions *opts)
The subscription should start with the first message in the channel.
NATS_EXTERN natsStatus stanSubOptions_Create(stanSubOptions **newOpts)
Creates a stanSubOptions object.
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.
NATS_EXTERN void natsStatistics_Destroy(natsStatistics *stats)
Destroys the natsStatistics object.
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.
NATS_EXTERN natsStatus natsStatistics_Create(natsStatistics **newStats)
Creates a natsStatistics object.
NATS_EXTERN const char * natsStatus_GetText(natsStatus s)
Get the text corresponding to a natsStatus.
NATS_EXTERN natsStatus natsSubscription_WaitForDrainCompletion(natsSubscription *sub, int64_t timeout)
Blocks until the drain operation completes.
NATS_EXTERN natsStatus natsSubscription_AutoUnsubscribe(natsSubscription *sub, int max)
Auto-Unsubscribes.
NATS_EXTERN natsStatus natsSubscription_GetMaxPending(natsSubscription *sub, int *msgs, int *bytes)
Returns the maximum number of pending messages and bytes.
NATS_EXTERN const char * natsSubscription_GetSubject(natsSubscription *sub)
Gets the subject name.
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.
NATS_EXTERN natsStatus natsSubscription_GetDropped(natsSubscription *sub, int64_t *msgs)
Returns the number of dropped messages.
NATS_EXTERN natsStatus natsSubscription_Drain(natsSubscription *sub)
Drains the subscription with a default timeout.
NATS_EXTERN natsStatus natsSubscription_NoDeliveryDelay(natsSubscription *sub)
Enables the No Delivery Delay mode.
NATS_EXTERN natsStatus natsSubscription_GetDelivered(natsSubscription *sub, int64_t *msgs)
Returns the number of delivered messages.
NATS_EXTERN void natsSubscription_Destroy(natsSubscription *sub)
Destroys the subscription.
NATS_EXTERN int64_t natsSubscription_GetID(natsSubscription *sub)
Gets the subscription id.
NATS_EXTERN bool natsSubscription_IsValid(natsSubscription *sub)
Checks the validity of the subscription.
NATS_EXTERN natsStatus natsSubscription_NextMsg(natsMsg **nextMsg, natsSubscription *sub, int64_t timeout)
Returns the next available message.
NATS_EXTERN natsStatus natsSubscription_SetPendingLimits(natsSubscription *sub, int msgLimit, int bytesLimit)
Sets the limit for pending messages and bytes.
NATS_EXTERN natsStatus natsSubscription_GetPendingLimits(natsSubscription *sub, int *msgLimit, int *bytesLimit)
Returns the current limit for pending messages and bytes.
NATS_EXTERN natsStatus natsSubscription_QueuedMsgs(natsSubscription *sub, uint64_t *queuedMsgs)
Gets the number of pending messages.
NATS_EXTERN natsStatus natsSubscription_DrainCompletionStatus(natsSubscription *sub)
Returns the status of the drain after completion.
NATS_EXTERN natsStatus natsSubscription_DrainTimeout(natsSubscription *sub, int64_t timeout)
Drains the subscription with the specified timeout.
NATS_EXTERN natsStatus natsSubscription_GetPending(natsSubscription *sub, int *msgs, int *bytes)
Returns the number of pending messages and bytes.
NATS_EXTERN natsStatus natsSubscription_SetOnCompleteCB(natsSubscription *sub, natsOnCompleteCB cb, void *closure)
Sets a completion callback.
NATS_EXTERN natsStatus natsSubscription_Unsubscribe(natsSubscription *sub)
Unsubscribes.
NATS_EXTERN natsStatus natsSubscription_ClearMaxPending(natsSubscription *sub)
Clears the statistics regarding the maximum pending values.
struct kvEntryList kvEntryList
A list of KeyValue store entries.
struct __stanSubOptions stanSubOptions
Way to configure a stanSubscription.
Definition: nats.h:1531
struct jsConsumerConfig jsConsumerConfig
struct __kvStore kvStore
Definition: nats.h:1367
struct jsOptions jsOptions
jsStorageCompression
Definition: nats.h:326
jsDeliverPolicy
Definition: nats.h:335
struct __stanConnOptions stanConnOptions
Way to configure a stanConnection.
Definition: nats.h:1525
jsStorageType
Definition: nats.h:316
struct jsTier jsTier
struct jsStreamInfoList jsStreamInfoList
struct jsPeerInfo jsPeerInfo
char natsInbox
Unique subject often used for point-to-point communication.
Definition: nats.h:187
struct jsStreamAlternate jsStreamAlternate
struct jsStreamInfo jsStreamInfo
struct jsStreamConfig jsStreamConfig
struct jsSequenceInfo jsSequenceInfo
struct jsStreamState jsStreamState
struct __stanMsg stanMsg
The Streaming message.
Definition: nats.h:1519
struct jsConsumerInfo jsConsumerInfo
struct jsSequencePair jsSequencePair
struct natsMetadata natsMetadata
A type to represent user-provided metadata, a list of k=v pairs.
jsRetentionPolicy
Definition: nats.h:295
struct jsPlacement jsPlacement
struct __kvWatcher kvWatcher
Definition: nats.h:1382
struct jsStreamStateSubject jsStreamStateSubject
struct __natsStatistics natsStatistics
Statistics of a natsConnection.
Definition: nats.h:159
struct jsAccountInfo jsAccountInfo
bool(* jsFetchNextHandler)(int *messages, int64_t *maxBytes, natsSubscription *sub, void *closure)
Callback used to customize flow control for js_PullSubscribeAsync.
Definition: nats.h:1240
struct kvConfig kvConfig
struct jsPubOptions jsPubOptions
jsDiscardPolicy
Definition: nats.h:306
struct jsDirectGetMsgOptions jsDirectGetMsgOptions
jsReplayPolicy
Definition: nats.h:361
struct __natsSubscription natsSubscription
Interest on a given subject.
Definition: nats.h:165
kvOperation
Definition: nats.h:1388
jsAckPolicy
Definition: nats.h:349
struct kvPurgeOptions kvPurgeOptions
struct __stanConnection stanConnection
A connection to a NATS Streaming Server.
Definition: nats.h:1507
void(* jsFetchCompleteHandler)(natsConnection *nc, natsSubscription *sub, natsStatus s, void *closure)
Callback used to indicate that the work of js_PullSubscribeAsync is done.
Definition: nats.h:1228
struct jsAccountLimits jsAccountLimits
struct __jsCtx jsCtx
Definition: nats.h:262
struct jsClusterInfo jsClusterInfo
struct jsStreamSourceInfo jsStreamSourceInfo
struct kvKeysList kvKeysList
A list of KeyValue store keys.
struct jsStreamSource jsStreamSource
struct jsRePublish jsRePublish
struct __natsOptions natsOptions
Way to configure a natsConnection.
Definition: nats.h:178
struct jsSubjectTransformConfig jsSubjectTransformConfig
struct kvWatchOptions kvWatchOptions
struct jsSubOptions jsSubOptions
struct jsConsumerSequenceMismatch jsConsumerSequenceMismatch
struct jsMsgMetaData jsMsgMetaData
struct jsConsumerNamesList jsConsumerNamesList
struct jsAPIStats jsAPIStats
struct __natsClientConfig natsClientConfig
An initial configuration for NATS client. Provides control over the threading model,...
struct jsConsumerPauseResponse jsConsumerPauseResponse
struct __kvStatus kvStatus
Definition: nats.h:1377
struct __kvEntry kvEntry
Definition: nats.h:1372
struct jsConsumerInfoList jsConsumerInfoList
struct jsStreamConsumerLimits jsStreamConsumerLimits
struct jsPubAckErr jsPubAckErr
struct __natsMsg natsMsg
A structure holding a subject, optional reply and payload.
Definition: nats.h:172
struct __stanSubscription stanSubscription
Interest on a given channel.
Definition: nats.h:1513
struct jsStreamStateSubjects jsStreamStateSubjects
struct jsExternalStream jsExternalStream
struct jsFetchRequest jsFetchRequest
struct jsPubAck jsPubAck
struct jsStreamNamesList jsStreamNamesList
struct jsLostStreamData jsLostStreamData
struct __natsConnection natsConnection
A connection to a NATS Server.
Definition: nats.h:152
struct natsMsgList natsMsgList
A list of NATS messages.
@ js_StorageCompressionNone
Specifies no compression. It's the default.
Definition: nats.h:327
@ js_StorageCompressionS2
Specifies S2.
Definition: nats.h:328
@ js_DeliverByStartSequence
Starts from a given sequence.
Definition: nats.h:339
@ js_DeliverByStartTime
Starts from a given UTC time (number of nanoseconds since epoch)
Definition: nats.h:340
@ js_DeliverNew
Starts with messages sent after the consumer is created.
Definition: nats.h:338
@ js_DeliverLastPerSubject
Starts with the last message for all subjects received.
Definition: nats.h:341
@ js_DeliverLast
Starts with the last sequence received.
Definition: nats.h:337
@ js_DeliverAll
Starts from the very beginning of a stream. This is the default.
Definition: nats.h:336
@ js_FileStorage
Specifies on disk storage. It's the default.
Definition: nats.h:317
@ js_MemoryStorage
Specifies in memory only.
Definition: nats.h:318
@ js_LimitsPolicy
Specifies that messages are retained until any given limit is reached, which could be one of MaxMsgs,...
Definition: nats.h:296
@ js_InterestPolicy
Specifies that when all known observables have acknowledged a message it can be removed.
Definition: nats.h:297
@ js_WorkQueuePolicy
Specifies that when the first worker or subscriber acknowledges the message it can be removed.
Definition: nats.h:298
@ js_DiscardNew
Will fail to store new messages.
Definition: nats.h:308
@ js_DiscardOld
Will remove older messages to return to the limits. This is the default.
Definition: nats.h:307
@ js_ReplayInstant
Replays messages as fast as possible.
Definition: nats.h:362
@ js_ReplayOriginal
Maintains the same timing as the messages were received.
Definition: nats.h:363
@ kvOp_Unknown
Definition: nats.h:1389
@ kvOp_Delete
Definition: nats.h:1391
@ kvOp_Put
Definition: nats.h:1390
@ kvOp_Purge
Definition: nats.h:1392
@ js_AckExplicit
Requires ack or nack for all messages.
Definition: nats.h:350
@ js_AckAll
When acking a sequence number, this implicitly acks all sequences below this one as well.
Definition: nats.h:352
@ js_AckNone
Requires no acks for delivered messages.
Definition: nats.h:351
#define NATS_EXTERN
Needed for shared library.
Definition: nats.h:49
int natsSock
Definition: nats.h:50
jsErrCode
Definition: status.h:138
natsStatus
Status returned by most of the APIs.
Definition: status.h:50
natsConnStatus
The connection state.
Definition: status.h:24
An initial configuration for NATS client. Provides control over the threading model,...
Definition: nats.h:196
bool DefaultRepliesToThreadPool
Definition: nats.h:206
bool UseSeparatePoolForReplies
Definition: nats.h:207
int ReplyThreadPoolMax
Definition: nats.h:208
int ThreadPoolMax
Definition: nats.h:203
int64_t DefaultWriteDeadline
Definition: nats.h:197
bool DefaultToThreadPool
Definition: nats.h:202
int64_t LockSpinCount
Definition: nats.h:199
Definition: nats.h:1075
uint64_t Total
Definition: nats.h:1076
uint64_t Errors
Definition: nats.h:1077
Definition: nats.h:1112
int64_t Consumers
Definition: nats.h:1116
int64_t Streams
Definition: nats.h:1115
int TiersLen
Definition: nats.h:1121
uint64_t Memory
Definition: nats.h:1113
jsAPIStats API
Definition: nats.h:1118
jsAccountLimits Limits
Definition: nats.h:1119
jsTier ** Tiers
Definition: nats.h:1120
char * Domain
Definition: nats.h:1117
uint64_t Store
Definition: nats.h:1114
Definition: nats.h:1085
int64_t MemoryMaxStreamBytes
Definition: nats.h:1091
int64_t MaxStreams
Definition: nats.h:1088
int64_t MaxAckPending
Definition: nats.h:1090
int64_t MaxConsumers
Definition: nats.h:1089
int64_t MaxStore
Definition: nats.h:1087
int64_t MaxMemory
Definition: nats.h:1086
bool MaxBytesRequired
Definition: nats.h:1093
int64_t StoreMaxStreamBytes
Definition: nats.h:1092
Definition: nats.h:708
int ReplicasLen
Definition: nats.h:712
char * Name
Definition: nats.h:709
jsPeerInfo ** Replicas
Definition: nats.h:711
char * Leader
Definition: nats.h:710
Definition: nats.h:834
bool MemoryStorage
Definition: nats.h:871
const char * Name
Definition: nats.h:835
int FilterSubjectsLen
Definition: nats.h:876
uint64_t OptStartSeq
Definition: nats.h:839
bool HeadersOnly
Definition: nats.h:854
uint64_t RateLimit
Definition: nats.h:848
jsDeliverPolicy DeliverPolicy
Definition: nats.h:838
const char * Description
Definition: nats.h:837
const char * Durable
Definition: nats.h:836
const char * SampleFrequency
Definition: nats.h:849
bool FlowControl
Definition: nats.h:852
int64_t MaxRequestBatch
Maximum Pull Consumer request batch size.
Definition: nats.h:857
int64_t AckWait
Definition: nats.h:842
int64_t MaxRequestMaxBytes
Maximum Pull Consumer request maximum bytes.
Definition: nats.h:859
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:840
int64_t MaxWaiting
Definition: nats.h:850
jsAckPolicy AckPolicy
Definition: nats.h:841
natsMetadata Metadata
User-provided metadata for the consumer, encoded as an array of {"key", "value",.....
Definition: nats.h:877
const char * DeliverSubject
Definition: nats.h:862
int64_t * BackOff
Redelivery durations expressed in nanoseconds.
Definition: nats.h:844
int64_t MaxRequestExpires
Maximum Pull Consumer request expiration, expressed in number of nanoseconds.
Definition: nats.h:858
int64_t Heartbeat
Heartbeat interval expressed in number of nanoseconds.
Definition: nats.h:853
int64_t PauseUntil
Suspends the consumer until this deadline, represented as number of nanoseconds since epoch.
Definition: nats.h:881
int64_t Replicas
Definition: nats.h:869
int BackOffLen
Definition: nats.h:845
int64_t MaxDeliver
Definition: nats.h:843
const char ** FilterSubjects
Multiple filter subjects.
Definition: nats.h:875
jsReplayPolicy ReplayPolicy
Definition: nats.h:847
const char * DeliverGroup
Definition: nats.h:863
int64_t MaxAckPending
Definition: nats.h:851
const char * FilterSubject
Definition: nats.h:846
int64_t InactiveThreshold
How long the server keeps an ephemeral after detecting loss of interest, expressed in number of nanos...
Definition: nats.h:866
Definition: nats.h:1014
bool Paused
Definition: nats.h:1027
jsSequenceInfo Delivered
Definition: nats.h:1019
jsConsumerConfig * Config
Definition: nats.h:1018
bool PushBound
Definition: nats.h:1026
int64_t NumWaiting
Definition: nats.h:1023
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:1017
jsClusterInfo * Cluster
Definition: nats.h:1025
int64_t PauseRemaining
Remaining time in nanoseconds.
Definition: nats.h:1028
int64_t NumAckPending
Definition: nats.h:1021
char * Stream
Definition: nats.h:1015
int64_t NumRedelivered
Definition: nats.h:1022
char * Name
Definition: nats.h:1016
jsSequenceInfo AckFloor
Definition: nats.h:1020
uint64_t NumPending
Definition: nats.h:1024
Definition: nats.h:1039
jsConsumerInfo ** List
Definition: nats.h:1040
int Count
Definition: nats.h:1041
Definition: nats.h:1053
int Count
Definition: nats.h:1055
char ** List
Definition: nats.h:1054
Definition: nats.h:1065
int64_t PauseRemaining
Remaining time in nanoseconds.
Definition: nats.h:1068
bool Paused
Definition: nats.h:1066
int64_t PauseUntil
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:1067
Definition: nats.h:902
uint64_t Stream
This is the stream sequence that the application should resume from.
Definition: nats.h:903
uint64_t ConsumerServer
This is the consumer sequence last sent by the server.
Definition: nats.h:905
uint64_t ConsumerClient
This is the consumer sequence that was last received by the library.
Definition: nats.h:904
Definition: nats.h:1185
const char * NextBySubject
Get the next message (based on sequence) for that subject.
Definition: nats.h:1187
uint64_t Sequence
Get the message at this sequence.
Definition: nats.h:1186
const char * LastBySubject
Get the last message on that subject.
Definition: nats.h:1188
Definition: nats.h:397
const char * DeliverPrefix
Definition: nats.h:399
const char * APIPrefix
Definition: nats.h:398
Definition: nats.h:1198
int64_t MaxBytes
Maximum bytes for the request (request complete based on whichever Batch or MaxBytes comes first)
Definition: nats.h:1201
int Batch
Maximum number of messages to be received (see MaxBytes)
Definition: nats.h:1200
int64_t Expires
Expiration of the request, expressed in nanoseconds.
Definition: nats.h:1199
bool NoWait
Will not wait if the request cannot be completed.
Definition: nats.h:1202
int64_t Heartbeat
Have server sends heartbeats to help detect communication failures.
Definition: nats.h:1203
Definition: nats.h:610
uint64_t * Msgs
Definition: nats.h:611
uint64_t Bytes
Definition: nats.h:613
int MsgsLen
Definition: nats.h:612
Definition: nats.h:1133
uint64_t NumPending
Definition: nats.h:1136
jsSequencePair Sequence
Definition: nats.h:1134
char * Stream
Definition: nats.h:1138
char * Domain
Definition: nats.h:1140
char * Consumer
Definition: nats.h:1139
uint64_t NumDelivered
Definition: nats.h:1135
int64_t Timestamp
Definition: nats.h:1137
Definition: nats.h:1254
jsPubAckErrHandler ErrHandler
Callback invoked when error encountered publishing a given message.
Definition: nats.h:1269
jsPubAckHandler AckHandler
Callback invoked for each asynchronous published message.
Definition: nats.h:1262
void * AckHandlerClosure
Closure (or user data) passed to jsPubAckHandler callback.
Definition: nats.h:1263
void * ErrHandlerClosure
Closure (or user data) passed to jsPubAckErrHandler callback.
Definition: nats.h:1270
int64_t StallWait
Amount of time (in milliseconds) to wait in a PublishAsync call when there is MaxPending inflight mes...
Definition: nats.h:1272
int64_t MaxPending
Maximum outstanding asynchronous publishes that can be inflight at one time.
Definition: nats.h:1255
int64_t MaxBytes
Auto-unsubscribe after receiving this many bytes.
Definition: nats.h:1280
bool NoWait
If NoWait is set, the subscription will receive the messages already stored on the server subject to ...
Definition: nats.h:1289
int64_t Heartbeat
Have server sends heartbeats at this interval (in milliseconds) to help detect communication failures...
Definition: nats.h:1299
int MaxMessages
Auto-unsubscribed after receiving this many messages.
Definition: nats.h:1279
int FetchSize
When using the automatic Fetch flow control (default NextHandler), this is the number of messages to ...
Definition: nats.h:1304
jsFetchNextHandler NextHandler
If set, switches to manual fetch flow control.
Definition: nats.h:1319
void * NextHandlerClosure
Definition: nats.h:1320
jsFetchCompleteHandler CompleteHandler
Fetch complete handler that receives the exit status code, the subscription's Complete handler is als...
Definition: nats.h:1294
int64_t Timeout
Auto-unsubsribe after this many milliseconds.
Definition: nats.h:1278
void * CompleteHandlerClosure
Definition: nats.h:1295
int KeepAhead
When using the automatic Fetch flow control (default NextHandler), initiate the next fetch request (t...
Definition: nats.h:1312
bool DeletedDetails
Get the list of deleted message sequences.
Definition: nats.h:1355
const char * SubjectsFilter
Get the list of subjects in this stream.
Definition: nats.h:1356
uint64_t Sequence
Purge up to but not including sequence.
Definition: nats.h:1345
uint64_t Keep
Number of messages to keep.
Definition: nats.h:1346
const char * Subject
This is the subject to match against messages for the purge command.
Definition: nats.h:1344
Definition: nats.h:1332
struct jsOptions::jsOptionsStream::jsOptionsStreamInfo Info
Optional stream information retrieval options.
struct jsOptions::jsOptionsStream::jsOptionsStreamPurge Purge
Optional stream purge options.
Definition: nats.h:1248
struct jsOptions::jsOptionsPullSubscribeAsync PullSubscribeAsync
extra options for js_PullSubscribeAsync
struct jsOptions::jsOptionsPublishAsync PublishAsync
extra options for js_PublishAsync
int64_t Wait
Amount of time (in milliseconds) to wait for various JetStream API requests, default is 5000 ms (5 se...
Definition: nats.h:1251
const char * Prefix
JetStream prefix, default is "$JS.API".
Definition: nats.h:1249
const char * Domain
Domain changes the domain part of JetSteam API prefix.
Definition: nats.h:1250
struct jsOptions::jsOptionsStream Stream
Optional stream options.
Definition: nats.h:694
bool Offline
Definition: nats.h:697
uint64_t Lag
Definition: nats.h:699
int64_t Active
Definition: nats.h:698
char * Name
Definition: nats.h:695
bool Current
Definition: nats.h:696
Definition: nats.h:380
int TagsLen
Definition: nats.h:383
const char * Cluster
Definition: nats.h:381
const char ** Tags
Definition: nats.h:382
Definition: nats.h:1161
natsMsg * Msg
Definition: nats.h:1162
natsStatus Err
Definition: nats.h:1163
jsErrCode ErrCode
Definition: nats.h:1164
const char * ErrText
Definition: nats.h:1165
Definition: nats.h:1148
uint64_t Sequence
Definition: nats.h:1150
bool Duplicate
Definition: nats.h:1152
char * Domain
Definition: nats.h:1151
char * Stream
Definition: nats.h:1149
Definition: nats.h:280
const char * ExpectLastMsgId
Expected last message ID in the stream.
Definition: nats.h:284
int64_t MaxWait
Amount of time (in milliseconds) to wait for a publish response, default will the context's Wait valu...
Definition: nats.h:281
uint64_t ExpectLastSeq
Expected last message sequence in the stream.
Definition: nats.h:285
bool ExpectNoMessage
Expected no message (that is, sequence == 0) for the subject in the stream.
Definition: nats.h:287
const char * ExpectStream
Expected stream to respond from the publish call.
Definition: nats.h:283
const char * MsgId
Message ID used for de-duplication.
Definition: nats.h:282
uint64_t ExpectLastSubjectSeq
Expected last message sequence for the subject in the stream.
Definition: nats.h:286
Definition: nats.h:433
bool HeadersOnly
Definition: nats.h:436
const char * Source
Definition: nats.h:434
const char * Destination
Definition: nats.h:435
Definition: nats.h:1000
int64_t Last
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:1003
uint64_t Stream
Definition: nats.h:1002
uint64_t Consumer
Definition: nats.h:1001
Definition: nats.h:990
uint64_t Consumer
Definition: nats.h:991
uint64_t Stream
Definition: nats.h:992
Definition: nats.h:735
const char * Name
Definition: nats.h:736
const char * Cluster
Definition: nats.h:738
const char * Domain
Definition: nats.h:737
Definition: nats.h:539
jsDiscardPolicy Discard
Definition: nats.h:551
const char ** Subjects
Definition: nats.h:542
jsSubjectTransformConfig SubjectTransform
Applies a subject transform (to matching messages) before doing anything else when a new message is r...
Definition: nats.h:599
bool AllowDirect
Allow higher performance, direct access to get individual messages. E.g. KeyValue.
Definition: nats.h:575
int SourcesLen
Definition: nats.h:560
bool DiscardNewPerSubject
Allow KV like semantics to also discard new on a per subject basis.
Definition: nats.h:583
jsStorageCompression Compression
js_StorageCompressionNone (default) or js_StorageCompressionS2.
Definition: nats.h:592
const char * Description
Definition: nats.h:541
const char * Template
Definition: nats.h:555
bool DenyPurge
Restrict the ability to purge messages.
Definition: nats.h:563
jsStorageType Storage
Definition: nats.h:552
jsStreamConsumerLimits ConsumerLimits
Sets the limits on certain options on all consumers of the stream.
Definition: nats.h:603
jsRetentionPolicy Retention
Definition: nats.h:544
int64_t MaxMsgs
Definition: nats.h:546
int64_t MaxConsumers
Definition: nats.h:545
natsMetadata Metadata
A user-provided array of key/value pairs, encoded as a string array [n1, v1, n2, v2,...
Definition: nats.h:588
uint64_t FirstSeq
the starting sequence number for the stream.
Definition: nats.h:595
const char * Name
Definition: nats.h:540
bool NoAck
Definition: nats.h:554
jsStreamSource ** Sources
Definition: nats.h:559
int32_t MaxMsgSize
Definition: nats.h:550
jsRePublish * RePublish
Allow republish of the message after being sequenced and stored.
Definition: nats.h:571
bool MirrorDirect
Allow higher performance and unified direct access for mirrors as well.
Definition: nats.h:579
int64_t Duplicates
Definition: nats.h:556
int64_t MaxMsgsPerSubject
Definition: nats.h:549
int64_t MaxAge
Definition: nats.h:548
int SubjectsLen
Definition: nats.h:543
bool AllowRollup
Allow messages to be placed into the system and purge all older messages using a special message head...
Definition: nats.h:567
jsStreamSource * Mirror
Definition: nats.h:558
jsPlacement * Placement
Definition: nats.h:557
int64_t MaxBytes
Definition: nats.h:547
int64_t Replicas
Definition: nats.h:553
bool Sealed
Seal a stream so no messages can get our or in.
Definition: nats.h:561
bool DenyDelete
Restrict the ability to delete messages.
Definition: nats.h:562
Definition: nats.h:455
int MaxAckPending
Definition: nats.h:457
int64_t InactiveThreshold
Definition: nats.h:456
Definition: nats.h:749
jsStreamSourceInfo ** Sources
Definition: nats.h:755
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:751
jsStreamAlternate ** Alternates
Definition: nats.h:757
jsStreamState State
Definition: nats.h:752
jsClusterInfo * Cluster
Definition: nats.h:753
jsStreamSourceInfo * Mirror
Definition: nats.h:754
int AlternatesLen
Definition: nats.h:758
jsStreamConfig * Config
Definition: nats.h:750
int SourcesLen
Definition: nats.h:756
Definition: nats.h:770
jsStreamInfo ** List
Definition: nats.h:771
int Count
Definition: nats.h:772
Definition: nats.h:784
char ** List
Definition: nats.h:785
int Count
Definition: nats.h:786
Definition: nats.h:416
jsExternalStream * External
Definition: nats.h:421
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:419
const char * Name
Definition: nats.h:417
const char * Domain
Definition: nats.h:425
uint64_t OptStartSeq
Definition: nats.h:418
const char * FilterSubject
Definition: nats.h:420
Definition: nats.h:720
const char * FilterSubject
Definition: nats.h:725
int64_t Active
Definition: nats.h:724
int SubjectTransformsLen
Definition: nats.h:727
char * Name
Definition: nats.h:721
jsExternalStream * External
Definition: nats.h:722
uint64_t Lag
Definition: nats.h:723
jsSubjectTransformConfig * SubjectTransforms
Definition: nats.h:726
Definition: nats.h:672
jsLostStreamData * Lost
Definition: nats.h:684
uint64_t LastSeq
Definition: nats.h:677
int64_t Consumers
Definition: nats.h:685
int DeletedLen
Definition: nats.h:683
uint64_t Msgs
Definition: nats.h:673
jsStreamStateSubjects * Subjects
Definition: nats.h:680
uint64_t FirstSeq
Definition: nats.h:675
int64_t LastTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:678
int64_t NumSubjects
Definition: nats.h:679
uint64_t * Deleted
Definition: nats.h:682
uint64_t NumDeleted
Definition: nats.h:681
uint64_t Bytes
Definition: nats.h:674
int64_t FirstTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:676
Definition: nats.h:623
uint64_t Msgs
Definition: nats.h:625
const char * Subject
Definition: nats.h:624
Definition: nats.h:659
int Count
Definition: nats.h:661
jsStreamStateSubject * List
Definition: nats.h:660
Definition: nats.h:925
bool ManualAck
If true, the user will have to acknowledge the messages.
Definition: nats.h:970
const char * Consumer
If specified, the subscription will be bound to an existing consumer from the Stream without attempti...
Definition: nats.h:942
const char * Stream
If specified, the consumer will be bound to this stream name.
Definition: nats.h:932
bool Ordered
If true, this will be an ordered consumer.
Definition: nats.h:982
const char * Queue
Queue name for queue subscriptions.
Definition: nats.h:957
jsConsumerConfig Config
Consumer configuration.
Definition: nats.h:975
Definition: nats.h:445
const char * Destination
Definition: nats.h:447
const char * Source
Definition: nats.h:446
Definition: nats.h:1098
const char * Name
Definition: nats.h:1099
int64_t Streams
Definition: nats.h:1102
uint64_t Store
Definition: nats.h:1101
int64_t Consumers
Definition: nats.h:1103
uint64_t Memory
Definition: nats.h:1100
jsAccountLimits Limits
Definition: nats.h:1104
Definition: nats.h:1402
uint8_t History
Definition: nats.h:1406
const char * Bucket
Definition: nats.h:1403
int64_t MaxBytes
Definition: nats.h:1408
int32_t MaxValueSize
Definition: nats.h:1405
int Replicas
Definition: nats.h:1410
const char * Description
Definition: nats.h:1404
jsStreamSource * Mirror
Definition: nats.h:1412
int64_t TTL
Definition: nats.h:1407
jsStorageType StorageType
Definition: nats.h:1409
jsRePublish * RePublish
Definition: nats.h:1411
int SourcesLen
Definition: nats.h:1414
jsStreamSource ** Sources
Definition: nats.h:1413
A list of KeyValue store entries.
Definition: nats.h:1472
kvEntry ** Entries
Definition: nats.h:1473
int Count
Definition: nats.h:1474
A list of KeyValue store keys.
Definition: nats.h:1496
int Count
Definition: nats.h:1498
char ** Keys
Definition: nats.h:1497
Definition: nats.h:1438
int64_t Timeout
Definition: nats.h:1440
int64_t DeleteMarkersOlderThan
Definition: nats.h:1450
Definition: nats.h:1424
bool IgnoreDeletes
Definition: nats.h:1425
bool IncludeHistory
Definition: nats.h:1426
int64_t Timeout
How long to wait (in milliseconds) for some operations to complete.
Definition: nats.h:1428
bool MetaOnly
Definition: nats.h:1427
Definition: nats.h:7773
const char * Name
The name of the endpoint.
Definition: nats.h:7779
microRequestHandler Handler
The request handler for the endpoint.
Definition: nats.h:7813
const char * Subject
The NATS subject the endpoint will listen on.
Definition: nats.h:7790
natsMetadata Metadata
Metadata for the endpoint, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition: nats.h:7808
bool NoQueueGroup
Disables the use of a queue group for the service.
Definition: nats.h:7802
const char * QueueGroup
Overrides the default queue group for the service.
Definition: nats.h:7796
void * State
A user-provided pointer to store with the endpoint (state/closure).
Definition: nats.h:7819
Definition: nats.h:7826
const char * Subject
The semantic version of the service.
Definition: nats.h:7835
const char * Name
The name of the service.
Definition: nats.h:7830
const char * QueueGroup
Endpoint's actual queue group (the default "q", or one explicitly set by the user),...
Definition: nats.h:7841
natsMetadata Metadata
Metadata for the endpoint, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition: nats.h:7847
Definition: nats.h:7854
const char * Subject
Definition: nats.h:7856
int64_t NumRequests
The number of requests received by the endpoint.
Definition: nats.h:7867
char LastErrorString[2048]
a copy of the last error message.
Definition: nats.h:7893
int64_t ProcessingTimeSeconds
total request processing time (the seconds part).
Definition: nats.h:7878
int64_t ProcessingTimeNanoseconds
total request processing time (the nanoseconds part).
Definition: nats.h:7883
const char * QueueGroup
Endpoint's actual queue group (the default "q", or one explicitly set by the user),...
Definition: nats.h:7862
int64_t NumErrors
The number of errors, service-level and internal, associated with the endpoint.
Definition: nats.h:7873
int64_t AverageProcessingTimeNanoseconds
average request processing time, in ns.
Definition: nats.h:7888
const char * Name
Definition: nats.h:7855
The Microservice endpoint group configuration object.
Definition: nats.h:7900
bool NoQueueGroup
Disables the use of a queue group for the service.
Definition: nats.h:7908
const char * QueueGroup
Overrides the default queue group for the service.
Definition: nats.h:7905
const char * Prefix
The subject prefix for the group.
Definition: nats.h:7902
The Microservice top-level configuration object.
Definition: nats.h:7918
const char * Description
The description of the service.
Definition: nats.h:7934
void * State
A user-provided pointer to state data.
Definition: nats.h:7998
const char * Version
The (semantic) version of the service.
Definition: nats.h:7929
microErrorHandler ErrHandler
An error notification handler.
Definition: nats.h:7979
natsMetadata Metadata
Immutable metadata for the service, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition: nats.h:7952
bool NoQueueGroup
Disables the use of a queue group for the service.
Definition: nats.h:7946
microRequestHandler StatsHandler
A custom stats handler.
Definition: nats.h:7970
microDoneHandler DoneHandler
A callback handler for handling the final cleanup Done event, right before the service is destroyed.
Definition: nats.h:7989
const char * QueueGroup
Overrides the default queue group for the service ("q").
Definition: nats.h:7940
const char * Name
The name of the service.
Definition: nats.h:7924
microEndpointConfig * Endpoint
The "main" (aka default) endpoint configuration.
Definition: nats.h:7961
Definition: nats.h:8007
natsMetadata Metadata
Metadata for the service, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition: nats.h:8036
const char * Name
The name of the service.
Definition: nats.h:8016
const char * Version
The semantic version of the service.
Definition: nats.h:8021
const char * Type
Response type. Always "io.nats.micro.v1.info_response".
Definition: nats.h:8011
const char * Id
The ID of the service instance responding to the request.
Definition: nats.h:8031
microEndpointInfo * Endpoints
Endpoints.
Definition: nats.h:8041
const char * Description
The description of the service.
Definition: nats.h:8026
int EndpointsLen
The number of endpoints in the Endpoints array.
Definition: nats.h:8046
Definition: nats.h:8053
int64_t Started
The timestamp of when the service was started.
Definition: nats.h:8077
int EndpointsLen
The number of endpoints in the endpoints array.
Definition: nats.h:8087
microEndpointStats * Endpoints
The stats for each endpoint of the service.
Definition: nats.h:8082
const char * Version
The semantic version of the service.
Definition: nats.h:8067
const char * Name
The name of the service.
Definition: nats.h:8062
const char * Type
Response type. Always "io.nats.micro.v1.stats_response".
Definition: nats.h:8057
const char * Id
The ID of the service instance responding to the request.
Definition: nats.h:8072
A type to represent user-provided metadata, a list of k=v pairs.
Definition: nats.h:247
int Count
Definition: nats.h:251
const char ** List
Definition: nats.h:249
A list of NATS messages.
Definition: nats.h:235
int Count
Definition: nats.h:237
natsMsg ** Msgs
Definition: nats.h:236