NATS C Client with JetStream and Streaming support  3.3.0
The nats.io C Client, Supported by Synadia Communications Inc.
nats.h
Go to the documentation of this file.
1// Copyright 2015-2022 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
18extern "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//
132// Types.
133//
145typedef struct __natsConnection natsConnection;
146
152typedef struct __natsStatistics natsStatistics;
153
158typedef struct __natsSubscription natsSubscription;
159
165typedef struct __natsMsg natsMsg;
166
171typedef struct __natsOptions natsOptions;
172
180typedef char natsInbox;
181
205typedef struct natsMsgList
206{
208 const int Count;
209
211
220typedef struct __jsCtx jsCtx;
221
237typedef struct jsPubOptions
238{
239 int64_t MaxWait;
240 const char *MsgId;
241 const char *ExpectStream;
242 const char *ExpectLastMsgId;
243 uint64_t ExpectLastSeq;
246
248
252typedef enum
253{
257
259
263typedef enum
264{
267
269
273typedef enum
274{
277
279
283typedef enum
284{
291
293
297typedef enum
298{
302
303
305
309typedef enum
310{
313
315
316
328typedef struct jsPlacement
329{
330 const char *Cluster;
331 const char **Tags;
333
335
345typedef struct jsExternalStream
346{
347 const char *APIPrefix;
348 const char *DeliverPrefix;
349
351
364typedef struct jsStreamSource
365{
366 const char *Name;
367 uint64_t OptStartSeq;
368 int64_t OptStartTime;
369 const char *FilterSubject;
371
373
443typedef struct jsStreamConfig {
444 const char *Name;
445 const char *Description;
446 const char **Subjects;
450 int64_t MaxMsgs;
451 int64_t MaxBytes;
452 int64_t MaxAge;
454 int32_t MaxMsgSize;
457 int64_t Replicas;
458 bool NoAck;
459 const char *Template;
460 int64_t Duplicates;
465 bool Sealed;
473
475
479typedef struct jsLostStreamData
480{
481 uint64_t *Msgs;
483 uint64_t Bytes;
484
486
493{
494 const char *Subject;
495 uint64_t Msgs;
496
498
529{
531 const int Count;
532
534
541typedef struct jsStreamState
542{
543 uint64_t Msgs;
544 uint64_t Bytes;
545 uint64_t FirstSeq;
546 int64_t FirstTime;
547 uint64_t LastSeq;
548 int64_t LastTime;
549 int64_t NumSubjects;
551 uint64_t NumDeleted;
552 uint64_t *Deleted;
555 int64_t Consumers;
556
558
563typedef struct jsPeerInfo
564{
565 char *Name;
568 int64_t Active;
569 uint64_t Lag;
570
572
577typedef struct jsClusterInfo
578{
579 char *Name;
580 char *Leader;
583
585
589typedef struct jsStreamSourceInfo
590{
591 char *Name;
593 uint64_t Lag;
594 int64_t Active;
595
597
604typedef struct jsStreamInfo
605{
607 int64_t Created;
613
615
652typedef struct jsConsumerConfig
653{
654 const char *Durable;
655 const char *Description;
656 const char *DeliverSubject;
657 const char *DeliverGroup;
659 uint64_t OptStartSeq;
660 int64_t OptStartTime;
662 int64_t AckWait;
663 int64_t MaxDeliver;
664 int64_t *BackOff;
666 const char *FilterSubject;
668 uint64_t RateLimit;
669 const char *SampleFrequency;
670 int64_t MaxWaiting;
673 int64_t Heartbeat;
675
676 // Pull based options.
679
680 // Ephemeral inactivity threshold.
682
684
703{
704 uint64_t Stream;
705 uint64_t ConsumerClient;
706 uint64_t ConsumerServer;
707
709
725typedef struct jsSubOptions
726{
733 const char *Stream;
743 const char *Consumer;
758 const char *Queue;
783 bool Ordered;
784
786
790typedef struct jsSequencePair
791{
792 uint64_t Consumer;
793 uint64_t Stream;
794
796
800typedef struct jsSequenceInfo
801{
802 uint64_t Consumer;
803 uint64_t Stream;
804 int64_t Last;
805
807
814typedef struct jsConsumerInfo
815{
816 char *Stream;
817 char *Name;
818 int64_t Created;
824 int64_t NumWaiting;
825 uint64_t NumPending;
828
830
834typedef struct jsAPIStats
835{
836 uint64_t Total;
837 uint64_t Errors;
838
840
844typedef struct jsAccountLimits
845{
846 int64_t MaxMemory;
847 int64_t MaxStore;
848 int64_t MaxStreams;
850
852
856typedef struct jsAccountInfo
857{
858 uint64_t Memory;
859 uint64_t Store;
860 int64_t Streams;
861 int64_t Consumers;
862 char *Domain;
865
867
875typedef struct jsMsgMetaData
876{
878 uint64_t NumDelivered;
879 uint64_t NumPending;
880 int64_t Timestamp;
881 char *Stream;
882 char *Consumer;
883 char *Domain;
884
886
890typedef struct jsPubAck
891{
892 char *Stream;
893 uint64_t Sequence;
894 char *Domain;
896
898
903typedef struct jsPubAckErr
904{
908 const char *ErrText;
909
911
912#ifndef BUILD_IN_DOXYGEN
913// Forward declaration
914typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
915#endif
916
922typedef struct jsOptions
923{
924 const char *Prefix;
925 const char *Domain;
926 int64_t Wait;
927
932 {
933 int64_t MaxPending;
936 int64_t StallWait;
937
939
947 {
958 {
959 const char *Subject;
960 uint64_t Sequence;
961 uint64_t Keep;
962
964
969 {
971 const char *SubjectsFilter;
972
974
976
978
982typedef struct __kvStore kvStore;
983
987typedef struct __kvEntry kvEntry;
988
992typedef struct __kvStatus kvStatus;
993
997typedef struct __kvWatcher kvWatcher;
998
1002typedef enum
1003{
1008
1009} kvOperation;
1010
1016typedef struct kvConfig
1017{
1018 const char *Bucket;
1019 const char *Description;
1021 uint8_t History;
1022 int64_t TTL;
1023 int64_t MaxBytes;
1026
1028
1034typedef struct kvWatchOptions
1035{
1039 int64_t Timeout;
1040
1042
1048typedef struct kvPurgeOptions
1049{
1050 // How long to wait (in milliseconds) for some operations to complete.
1051 int64_t Timeout;
1052
1053 // When calling kvStore_PurgeDeletes(), all keys that have a delete or
1054 // purge marker as the last entry are gathered and then those keys
1055 // are purged of their content, including the marker.
1056 // Starting with NATS C client v3.3.0, if this option is not specified,
1057 // only the markers older than 30 minutes will be deleted. Use this
1058 // option to set the limit or a negative value to force removal of
1059 // markers regardless of their age.
1060 // The value is expressed as a time in nanoseconds.
1062
1064
1082typedef struct kvEntryList
1083{
1085 const int Count;
1086
1088
1106typedef struct kvKeysList
1107{
1108 char **Keys;
1109 const int Count;
1110
1112
1113#if defined(NATS_HAS_STREAMING)
1118typedef struct __stanConnection stanConnection;
1119
1124typedef struct __stanSubscription stanSubscription;
1125
1130typedef struct __stanMsg stanMsg;
1131
1136typedef struct __stanConnOptions stanConnOptions;
1137
1142typedef struct __stanSubOptions stanSubOptions;
1143#endif
1144 // end of typesGroup
1146
1147//
1148// Callbacks.
1149//
1150
1173typedef void (*natsMsgHandler)(
1174 natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure);
1175
1190 natsConnection *nc, void *closure);
1191
1198typedef void (*natsErrHandler)(
1199 natsConnection *nc, natsSubscription *subscription, natsStatus err,
1200 void *closure);
1201
1216 void **userData,
1217 void *loop,
1218 natsConnection *nc,
1219 natsSock socket);
1220
1231 void *userData,
1232 bool add);
1233
1244 void *userData,
1245 bool add);
1246
1255 void *userData);
1256
1279 char **userJWT,
1280 char **customErrTxt,
1281 void *closure);
1282
1283
1310 char **customErrTxt,
1311 unsigned char **signature,
1312 int *signatureLength,
1313 const char *nonce,
1314 void *closure);
1315
1324typedef const char* (*natsTokenHandler)(void *closure);
1325
1326
1334typedef void (*natsOnCompleteCB)(void *closure);
1335
1356typedef int64_t (*natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure);
1357
1358#ifdef BUILD_IN_DOXYGEN
1392typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
1393#endif
1394
1395#if defined(NATS_HAS_STREAMING)
1404typedef void (*stanPubAckHandler)(const char *guid, const char *error, void *closure);
1405
1415typedef void (*stanMsgHandler)(
1416 stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure);
1417
1425 stanConnection *sc, const char* errorTxt, void *closure);
1426#endif
1427 // end of callbacksGroup
1429
1430//
1431// Functions.
1432//
1459nats_Open(int64_t lockSpinCount);
1460
1461
1466NATS_EXTERN const char*
1468
1476NATS_EXTERN uint32_t
1478
1479#ifdef BUILD_IN_DOXYGEN
1495#else
1496
1497#define nats_CheckCompatibility() nats_CheckCompatibilityImpl(NATS_VERSION_REQUIRED_NUMBER, \
1498 NATS_VERSION_NUMBER, \
1499 NATS_VERSION_STRING)
1500
1501NATS_EXTERN bool
1502nats_CheckCompatibilityImpl(uint32_t reqVerNumber, uint32_t verNumber, const char *verString);
1503
1504#endif
1505
1510NATS_EXTERN int64_t
1512
1518NATS_EXTERN int64_t
1520
1528NATS_EXTERN void
1529nats_Sleep(int64_t sleepTime);
1530
1543NATS_EXTERN const char*
1545
1555nats_GetLastErrorStack(char *buffer, size_t bufLen);
1556
1577NATS_EXTERN void
1579
1611
1622NATS_EXTERN void
1624
1650nats_Sign(const char *encodedSeed,
1651 const char *input,
1652 unsigned char **signature,
1653 int *signatureLength);
1654
1675NATS_EXTERN void
1677
1724nats_CloseAndWait(int64_t timeout);
1725 // end of libraryGroup
1727
1743NATS_EXTERN const char*
1745 // end of statusGroup
1747
1767
1786 uint64_t *inMsgs, uint64_t *inBytes,
1787 uint64_t *outMsgs, uint64_t *outBytes,
1788 uint64_t *reconnects);
1789
1796NATS_EXTERN void
1798 // end of statsGroup
1800
1827
1848/*
1849 * The above is for doxygen. The proper syntax for username/password
1850 * is without the '\' character:
1851 *
1852 * nats://localhost:4222
1853 * nats://user@localhost:4222
1854 * nats://user:password@localhost:4222
1855 */
1857natsOptions_SetURL(natsOptions *opts, const char *url);
1858
1874natsOptions_SetServers(natsOptions *opts, const char** servers, int serversCount);
1875
1902natsOptions_SetUserInfo(natsOptions *opts, const char *user, const char *password);
1903
1929natsOptions_SetToken(natsOptions *opts, const char *token);
1930
1948 void *closure);
1949
1961
1975natsOptions_SetTimeout(natsOptions *opts, int64_t timeout);
1976
1985natsOptions_SetName(natsOptions *opts, const char *name);
1986
1998
2014
2041natsOptions_SetCATrustedCertificates(natsOptions *opts, const char *certificates);
2042
2059 const char *certsFileName,
2060 const char *keyFileName);
2061
2075 const char *cert,
2076 const char *key);
2077
2094natsOptions_SetCiphers(natsOptions *opts, const char *ciphers);
2095
2110natsOptions_SetCipherSuites(natsOptions *opts, const char *ciphers);
2111
2123
2136
2149
2162
2174
2188
2202
2216
2226
2241natsOptions_SetReconnectWait(natsOptions *opts, int64_t reconnectWait);
2242
2267natsOptions_SetReconnectJitter(natsOptions *opts, int64_t jitter, int64_t jitterTLS);
2268
2290 void *closure);
2291
2306
2322
2339 void *closure);
2340
2355 void *closure);
2356
2375 natsConnectionHandler disconnectedCb,
2376 void *closure);
2377
2395 natsConnectionHandler reconnectedCb,
2396 void *closure);
2397
2414 natsConnectionHandler discoveredServersCb,
2415 void *closure);
2416
2435 natsConnectionHandler lameDuckCb,
2436 void *closure);
2437
2457 void *loop,
2458 natsEvLoop_Attach attachCb,
2461 natsEvLoop_Detach detachCb);
2462
2487
2512
2542
2554
2571
2592
2648 natsConnectionHandler connectedCb, void* closure);
2649
2680 natsUserJWTHandler ujwtCB,
2681 void *ujwtClosure,
2683 void *sigClosure);
2684
2725 const char *userOrChainedFile,
2726 const char *seedFile);
2727
2753 const char *pubKey,
2755 void *sigClosure);
2756
2783 const char *pubKey,
2784 const char *seedFile);
2785
2801
2838
2855natsOptions_SetCustomInboxPrefix(natsOptions *opts, const char *inboxPrefix);
2856
2864NATS_EXTERN void
2866 // end of optsGroup
2868
2869#if defined(NATS_HAS_STREAMING)
2905
2929
2948
2960
2972
2982
2983
2999stanConnOptions_SetMaxPubAcksInflight(stanConnOptions *opts, int maxPubAcksInflight, float percentage);
3000
3017stanConnOptions_SetPings(stanConnOptions *opts, int interval, int maxOut);
3018
3031
3039NATS_EXTERN void
3041 // end of stanConnOptsGroup
3043
3076
3096stanSubOptions_SetDurableName(stanSubOptions *opts, const char *durableName);
3097
3113
3127
3145
3162
3176
3187
3197
3214
3222NATS_EXTERN void
3224 // end of stanSubOptsGroup
3226#endif
3227
3249
3256NATS_EXTERN void
3258 // end of inboxGroup
3260
3279NATS_EXTERN void
3281
3300natsMsg_Create(natsMsg **newMsg, const char *subj, const char *reply,
3301 const char *data, int dataLen);
3302
3311NATS_EXTERN const char*
3313
3323NATS_EXTERN const char*
3325
3341NATS_EXTERN const char*
3343
3350NATS_EXTERN int
3352
3369natsMsgHeader_Set(natsMsg *msg, const char *key, const char *value);
3370
3387natsMsgHeader_Add(natsMsg *msg, const char *key, const char *value);
3388
3408natsMsgHeader_Get(natsMsg *msg, const char *key, const char **value);
3409
3444natsMsgHeader_Values(natsMsg *msg, const char *key, const char* **values, int *count);
3445
3476natsMsgHeader_Keys(natsMsg *msg, const char* **keys, int *count);
3477
3492natsMsgHeader_Delete(natsMsg *msg, const char *key);
3493
3519NATS_EXTERN bool
3521
3528NATS_EXTERN void
3530 // end of msgGroup
3532
3533#if defined(NATS_HAS_STREAMING)
3546NATS_EXTERN uint64_t
3548
3555NATS_EXTERN int64_t
3557
3566NATS_EXTERN bool
3568
3584NATS_EXTERN const char*
3586
3593NATS_EXTERN int
3595
3602NATS_EXTERN void
3604 // end of stanMsgGroup
3606#endif
3607
3640
3651NATS_EXTERN void
3653
3664NATS_EXTERN void
3666
3687
3694NATS_EXTERN bool
3696
3703NATS_EXTERN bool
3705
3712bool
3714
3725
3737NATS_EXTERN int
3739
3757
3772
3782NATS_EXTERN int64_t
3784
3796
3807natsConnection_GetConnectedUrl(natsConnection *nc, char *buffer, size_t bufferSize);
3808
3819natsConnection_GetConnectedServerId(natsConnection *nc, char *buffer, size_t bufferSize);
3820
3842natsConnection_GetServers(natsConnection *nc, char ***servers, int *count);
3843
3865natsConnection_GetDiscoveredServers(natsConnection *nc, char ***servers, int *count);
3866
3880natsConnection_GetLastError(natsConnection *nc, const char **lastError);
3881
3897
3918
3938
3953 const unsigned char *message, int messageLen,
3954 unsigned char sig[64]);
3955
3976
3989
3999
4021
4031NATS_EXTERN void
4033
4041NATS_EXTERN void
4043 // end of connMgtGroup
4045
4064 const void *data, int dataLen);
4065
4082 const char *str);
4083
4096
4111 const char *reply, const void *data, int dataLen);
4112
4131 const char *reply, const char *str);
4132
4151natsConnection_Request(natsMsg **replyMsg, natsConnection *nc, const char *subj,
4152 const void *data, int dataLen, int64_t timeout);
4153
4177 const char *subj, const char *str,
4178 int64_t timeout);
4179
4196 natsMsg *requestMsg, int64_t timeout);
4197 // end of connPubGroup
4199
4222 const char *subject, natsMsgHandler cb,
4223 void *cbClosure);
4224
4257 const char *subject, int64_t timeout,
4258 natsMsgHandler cb, void *cbClosure);
4259
4272 const char *subject);
4273
4293 const char *subject, const char *queueGroup,
4294 natsMsgHandler cb, void *cbClosure);
4295
4330 const char *subject, const char *queueGroup,
4331 int64_t timeout, natsMsgHandler cb, void *cbClosure);
4332
4346 const char *subject, const char *queueGroup);
4347 // end of connSubGroup
4349 // end of connGroup
4351
4372
4397 int64_t timeout);
4398
4409
4423
4435
4457natsSubscription_SetPendingLimits(natsSubscription *sub, int msgLimit, int bytesLimit);
4458
4479natsSubscription_GetPendingLimits(natsSubscription *sub, int *msgLimit, int *bytesLimit);
4480
4497
4508
4526
4541
4550
4579 int *pendingMsgs,
4580 int *pendingBytes,
4581 int *maxPendingMsgs,
4582 int *maxPendingBytes,
4583 int64_t *deliveredMsgs,
4584 int64_t *droppedMsgs);
4585
4594NATS_EXTERN bool
4596
4616
4669
4694
4722
4753
4761NATS_EXTERN void
4763 // end of subGroup
4765
4766#if defined(NATS_HAS_STREAMING)
4808stanConnection_Connect(stanConnection **sc, const char *clusterID, const char *clientID,
4809 stanConnOptions *options);
4810
4835
4860NATS_EXTERN void
4862
4875
4885 // end of stanConnMgtGroup
4887
4906 const void *data, int dataLen);
4907
4933 const void *data, int dataLen,
4934 stanPubAckHandler ah, void *ahClosure);
4935 // end of stanConnPubGroup
4937
4962 const char *channel, stanMsgHandler cb,
4963 void *cbClosure, stanSubOptions *options);
4964
4986 const char *channel, const char *queueGroup,
4987 stanMsgHandler cb, void *cbClosure, stanSubOptions *options);
4988 // end of stanConnSubGroup
4990 // end of stanConnGroup
4992
5023
5035
5057
5070
5078NATS_EXTERN void
5080 // end of stanSubGroup
5082#endif
5083
5099
5116
5123NATS_EXTERN void
5125
5141
5150
5159
5168
5190
5212
5236js_PurgeStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5237
5249js_DeleteStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5250
5269js_GetMsg(natsMsg **msg, jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5270
5289js_GetLastMsg(natsMsg **msg, jsCtx *js, const char *stream, const char *subject, jsOptions *opts, jsErrCode *errCode);
5290
5308js_DeleteMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5309
5325js_EraseMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5326
5354js_GetStreamInfo(jsStreamInfo **si, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5355
5362NATS_EXTERN void
5364
5375
5397 const char *stream, jsConsumerConfig *cfg,
5398 jsOptions *opts, jsErrCode *errCode);
5399
5421 const char *stream, jsConsumerConfig *cfg,
5422 jsOptions *opts, jsErrCode *errCode);
5423
5439 const char *stream, const char *consumer,
5440 jsOptions *opts, jsErrCode *errCode);
5441
5454js_DeleteConsumer(jsCtx *js, const char *stream, const char *consumer,
5455 jsOptions *opts, jsErrCode *errCode);
5456
5463NATS_EXTERN void
5465
5482
5489NATS_EXTERN void
5491 // end of jsAssetsGroup
5493
5509
5526js_Publish(jsPubAck **pubAck, jsCtx *js, const char *subj, const void *data, int dataLen,
5527 jsPubOptions *opts, jsErrCode *errCode);
5528
5550 jsPubOptions *opts, jsErrCode *errCode);
5551
5558NATS_EXTERN void
5560
5572js_PublishAsync(jsCtx *js, const char *subj, const void *data, int dataLen,
5573 jsPubOptions *opts);
5574
5600
5614
5665 // end of jsPubGroup
5667
5683
5699js_Subscribe(natsSubscription **sub, jsCtx *js, const char *subject,
5700 natsMsgHandler cb, void* cbClosure,
5701 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
5702
5716js_SubscribeSync(natsSubscription **sub, jsCtx *js, const char *subject,
5717 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
5718
5738js_PullSubscribe(natsSubscription **sub, jsCtx *js, const char *subject, const char *durable,
5739 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
5740
5760natsSubscription_Fetch(natsMsgList *list, natsSubscription *sub, int batch, int64_t timeout,
5761 jsErrCode *errCode);
5762
5775 jsOptions *opts, jsErrCode *errCode);
5776
5806 // end of jsSubGroup
5808
5831
5838NATS_EXTERN void
5840
5851
5865
5878
5892natsMsg_NakWithDelay(natsMsg *msg, int64_t delay, jsOptions *opts);
5893
5904
5915
5925NATS_EXTERN uint64_t
5927
5937NATS_EXTERN int64_t
5939 // end of jsMsg
5941 // end of jsGroup
5943
5974
5991
6008js_KeyValue(kvStore **new_kv, jsCtx *js, const char *bucket);
6009
6020js_DeleteKeyValue(jsCtx *js, const char *bucket);
6021
6029NATS_EXTERN void
6031 // end of kvGroupMgt
6033
6050NATS_EXTERN const char*
6052
6059NATS_EXTERN const char*
6061
6068NATS_EXTERN const void*
6070
6077NATS_EXTERN int
6079
6087NATS_EXTERN const char*
6089
6096NATS_EXTERN uint64_t
6098
6105NATS_EXTERN int64_t
6107
6117NATS_EXTERN uint64_t
6119
6130
6137NATS_EXTERN void
6139 // end of kvEntry
6141
6153kvStore_Get(kvEntry **new_entry, kvStore *kv, const char *key);
6154
6168kvStore_GetRevision(kvEntry **new_entry, kvStore *kv, const char *key, uint64_t revision);
6169
6181kvStore_Put(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
6182
6197kvStore_PutString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
6198
6210kvStore_Create(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
6211
6226kvStore_CreateString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
6227
6240kvStore_Update(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len, uint64_t last);
6241
6257kvStore_UpdateString(uint64_t *rev, kvStore *kv, const char *key, const char *data, uint64_t last);
6258
6267kvStore_Delete(kvStore *kv, const char *key);
6268
6278kvStore_Purge(kvStore *kv, const char *key, kvPurgeOptions *opts);
6279
6289
6299
6319
6337kvStore_Watch(kvWatcher **new_watcher, kvStore *kv, const char *keys, kvWatchOptions *opts);
6338
6355
6376
6388NATS_EXTERN void
6390
6414kvStore_History(kvEntryList *list, kvStore *kv, const char *key, kvWatchOptions *opts);
6415
6427NATS_EXTERN void
6429
6439NATS_EXTERN const char*
6441
6442// PurgeDeletes
6443
6455
6482kvWatcher_Next(kvEntry **new_entry, kvWatcher *w, int64_t timeout);
6483
6495
6502NATS_EXTERN void
6504 // end of kvWatcher
6506
6523NATS_EXTERN const char*
6525
6532NATS_EXTERN uint64_t
6534
6541NATS_EXTERN int64_t
6543
6550NATS_EXTERN int64_t
6552
6559NATS_EXTERN int64_t
6561
6568NATS_EXTERN void
6570 // end of kvStatus
6572 // end of kvGroup
6574 // end of funcGroup
6576
6613#ifdef __cplusplus
6614}
6615#endif
6616
6617#endif /* NATS_H_ */
void(* natsOnCompleteCB)(void *closure)
Callback used to notify that an object lifecycle is complete.
Definition: nats.h:1334
natsStatus(* natsEvLoop_Attach)(void **userData, void *loop, natsConnection *nc, natsSock socket)
Attach this connection to the external event loop.
Definition: nats.h:1215
natsStatus(* natsUserJWTHandler)(char **userJWT, char **customErrTxt, void *closure)
Callback used to fetch and return account signed user JWT.
Definition: nats.h:1278
natsStatus(* natsEvLoop_WriteAddRemove)(void *userData, bool add)
Write event needs to be added or removed.
Definition: nats.h:1243
int64_t(* natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure)
Callback used to specify how long to wait between reconnects.
Definition: nats.h:1356
const char *(* natsTokenHandler)(void *closure)
Callback used to build a token on connections and reconnections.
Definition: nats.h:1324
void(* jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure)
Callback used to process asynchronous publish errors from JetStream.
Definition: nats.h:1392
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:1198
natsStatus(* natsEvLoop_Detach)(void *userData)
Detach from the event loop.
Definition: nats.h:1254
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:1309
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:1424
void(* natsConnectionHandler)(natsConnection *nc, void *closure)
Callback used to notify the user of asynchronous connection events.
Definition: nats.h:1189
void(* natsMsgHandler)(natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition: nats.h:1173
void(* stanPubAckHandler)(const char *guid, const char *error, void *closure)
Callback used to notify of an asynchronous publish result.
Definition: nats.h:1404
natsStatus(* natsEvLoop_ReadAddRemove)(void *userData, bool add)
Read event needs to be added or removed.
Definition: nats.h:1230
void(* stanMsgHandler)(stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition: nats.h:1415
NATS_EXTERN int natsConnection_Buffered(natsConnection *nc)
Returns the number of bytes to be sent to the server.
bool natsConnection_IsDraining(natsConnection *nc)
Test if connection is draining.
NATS_EXTERN void natsConnection_Close(natsConnection *nc)
Closes the connection.
NATS_EXTERN natsStatus natsConnection_Flush(natsConnection *nc)
Flushes the connection.
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.
natsStatus natsConnection_GetLocalIPAndPort(natsConnection *nc, char **ip, int *port)
Returns the connection local IP and port.
NATS_EXTERN natsStatus natsConnection_FlushTimeout(natsConnection *nc, int64_t timeout)
Flushes the connection with a given timeout.
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.
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 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 js_DeleteStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode)
Deletes a stream.
NATS_EXTERN natsStatus js_DeleteConsumer(jsCtx *js, const char *stream, const char *consumer, jsOptions *opts, jsErrCode *errCode)
Deletes a consumer.
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_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_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 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 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 jsStreamConfig_Init(jsStreamConfig *cfg)
Initializes a streaming configuration structure.
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_AddConsumer(jsConsumerInfo **ci, jsCtx *js, const char *stream, jsConsumerConfig *cfg, jsOptions *opts, jsErrCode *errCode)
Adds a JetStream consumer.
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 jsSubOptions_Init(jsSubOptions *opts)
Initializes a subscribe options structure.
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 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 const void * kvEntry_Value(kvEntry *e)
Returns the value for this key.
NATS_EXTERN uint64_t kvEntry_Revision(kvEntry *e)
Returns the unique sequence for this value.
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_ValueString(kvEntry *e)
Returns the value, as a string, for this key.
NATS_EXTERN void kvEntry_Destroy(kvEntry *e)
Destroys the KeyValue entry object.
NATS_EXTERN const char * kvEntry_Key(kvEntry *e)
Returns the name of the key that was retrieved.
NATS_EXTERN const char * kvEntry_Bucket(kvEntry *e)
Returns the name of the bucket the data was loaded from.
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_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 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 const char * kvStore_Bucket(kvStore *kv)
Returns the bucket name of this KeyValue store object.
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 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 const char * kvStatus_Bucket(kvStatus *sts)
Returns the bucket name.
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 int64_t kvStatus_Replicas(kvStatus *sts)
Returns the number of replicas to keep for a bucket.
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_GetVersion(void)
Returns the Library's version.
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.
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 const char * nats_GetLastError(natsStatus *status)
Returns the calling thread's last known error.
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 void nats_ReleaseThreadMemory(void)
Release thread-local memory possibly allocated by the library.
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 const char * natsMsg_GetData(const natsMsg *msg)
Returns the message payload.
NATS_EXTERN natsStatus natsMsgHeader_Keys(natsMsg *msg, const char ***keys, int *count)
Get all header keys.
NATS_EXTERN const char * natsMsg_GetReply(const natsMsg *msg)
Returns the reply set in this message.
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 const char * natsMsg_GetSubject(const natsMsg *msg)
Returns the subject set in this message.
NATS_EXTERN natsStatus natsMsgHeader_Values(natsMsg *msg, const char *key, const char ***values, int *count)
Get all header values associated with key.
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 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_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_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_IPResolutionOrder(natsOptions *opts, int order)
Dictates the order in which host name are resolved during connect.
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_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 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 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:1142
struct jsConsumerConfig jsConsumerConfig
struct __kvStore kvStore
Definition: nats.h:982
struct jsOptions jsOptions
jsDeliverPolicy
Definition: nats.h:284
struct __stanConnOptions stanConnOptions
Way to configure a stanConnection.
Definition: nats.h:1136
jsStorageType
Definition: nats.h:274
struct jsPeerInfo jsPeerInfo
char natsInbox
Unique subject often used for point-to-point communication.
Definition: nats.h:180
struct jsStreamInfo jsStreamInfo
struct jsStreamConfig jsStreamConfig
struct jsSequenceInfo jsSequenceInfo
struct jsStreamState jsStreamState
struct __stanMsg stanMsg
The Streaming message.
Definition: nats.h:1130
struct jsConsumerInfo jsConsumerInfo
struct jsSequencePair jsSequencePair
jsRetentionPolicy
Definition: nats.h:253
struct jsPlacement jsPlacement
struct __kvWatcher kvWatcher
Definition: nats.h:997
struct jsStreamStateSubject jsStreamStateSubject
struct __natsStatistics natsStatistics
Statistics of a natsConnection.
Definition: nats.h:152
struct jsAccountInfo jsAccountInfo
struct kvConfig kvConfig
struct jsPubOptions jsPubOptions
jsDiscardPolicy
Definition: nats.h:264
jsReplayPolicy
Definition: nats.h:310
struct __natsSubscription natsSubscription
Interest on a given subject.
Definition: nats.h:158
kvOperation
Definition: nats.h:1003
jsAckPolicy
Definition: nats.h:298
struct kvPurgeOptions kvPurgeOptions
struct __stanConnection stanConnection
A connection to a NATS Streaming Server.
Definition: nats.h:1118
struct jsAccountLimits jsAccountLimits
struct __jsCtx jsCtx
Definition: nats.h:220
struct jsClusterInfo jsClusterInfo
struct jsStreamSourceInfo jsStreamSourceInfo
struct kvKeysList kvKeysList
A list of KeyValue store keys.
struct jsStreamSource jsStreamSource
struct __natsOptions natsOptions
Way to configure a natsConnection.
Definition: nats.h:171
struct kvWatchOptions kvWatchOptions
struct jsSubOptions jsSubOptions
struct jsConsumerSequenceMismatch jsConsumerSequenceMismatch
struct jsMsgMetaData jsMsgMetaData
struct jsAPIStats jsAPIStats
struct __kvStatus kvStatus
Definition: nats.h:992
struct __kvEntry kvEntry
Definition: nats.h:987
struct jsPubAckErr jsPubAckErr
struct __natsMsg natsMsg
A structure holding a subject, optional reply and payload.
Definition: nats.h:165
struct __stanSubscription stanSubscription
Interest on a given channel.
Definition: nats.h:1124
struct jsStreamStateSubjects jsStreamStateSubjects
struct jsExternalStream jsExternalStream
struct jsPubAck jsPubAck
struct jsLostStreamData jsLostStreamData
struct __natsConnection natsConnection
A connection to a NATS Server.
Definition: nats.h:145
struct natsMsgList natsMsgList
A list of NATS messages.
@ js_DeliverByStartSequence
Starts from a given sequence.
Definition: nats.h:288
@ js_DeliverByStartTime
Starts from a given UTC time (number of nanoseconds since epoch)
Definition: nats.h:289
@ js_DeliverNew
Starts with messages sent after the consumer is created.
Definition: nats.h:287
@ js_DeliverLastPerSubject
Starts with the last message for all subjects received.
Definition: nats.h:290
@ js_DeliverLast
Starts with the last sequence received.
Definition: nats.h:286
@ js_DeliverAll
Starts from the very beginning of a stream. This is the default.
Definition: nats.h:285
@ js_FileStorage
Specifies on disk storage. It's the default.
Definition: nats.h:275
@ js_MemoryStorage
Specifies in memory only.
Definition: nats.h:276
@ js_LimitsPolicy
Specifies that messages are retained until any given limit is reached, which could be one of MaxMsgs,...
Definition: nats.h:254
@ js_InterestPolicy
Specifies that when all known observables have acknowledged a message it can be removed.
Definition: nats.h:255
@ js_WorkQueuePolicy
Specifies that when the first worker or subscriber acknowledges the message it can be removed.
Definition: nats.h:256
@ js_DiscardNew
Will fail to store new messages.
Definition: nats.h:266
@ js_DiscardOld
Will remove older messages to return to the limits. This is the default.
Definition: nats.h:265
@ js_ReplayInstant
Replays messages as fast as possible.
Definition: nats.h:311
@ js_ReplayOriginal
Maintains the same timing as the messages were received.
Definition: nats.h:312
@ kvOp_Unknown
Definition: nats.h:1004
@ kvOp_Delete
Definition: nats.h:1006
@ kvOp_Put
Definition: nats.h:1005
@ kvOp_Purge
Definition: nats.h:1007
@ js_AckExplicit
Requires ack or nack for all messages.
Definition: nats.h:299
@ js_AckAll
When acking a sequence number, this implicitly acks all sequences below this one as well.
Definition: nats.h:301
@ js_AckNone
Requires no acks for delivered messages.
Definition: nats.h:300
#define NATS_EXTERN
Needed for shared library.
Definition: nats.h:49
int natsSock
Definition: nats.h:50
jsErrCode
Definition: status.h:135
natsStatus
Status returned by most of the APIs.
Definition: status.h:50
natsConnStatus
The connection state.
Definition: status.h:24
Definition: nats.h:835
uint64_t Total
Definition: nats.h:836
uint64_t Errors
Definition: nats.h:837
Definition: nats.h:857
int64_t Consumers
Definition: nats.h:861
int64_t Streams
Definition: nats.h:860
uint64_t Memory
Definition: nats.h:858
jsAPIStats API
Definition: nats.h:863
jsAccountLimits Limits
Definition: nats.h:864
char * Domain
Definition: nats.h:862
uint64_t Store
Definition: nats.h:859
Definition: nats.h:845
int64_t MaxStreams
Definition: nats.h:848
int64_t MaxConsumers
Definition: nats.h:849
int64_t MaxStore
Definition: nats.h:847
int64_t MaxMemory
Definition: nats.h:846
Definition: nats.h:578
int ReplicasLen
Definition: nats.h:582
char * Name
Definition: nats.h:579
jsPeerInfo ** Replicas
Definition: nats.h:581
char * Leader
Definition: nats.h:580
Definition: nats.h:653
uint64_t OptStartSeq
Definition: nats.h:659
bool HeadersOnly
Definition: nats.h:674
uint64_t RateLimit
Definition: nats.h:668
jsDeliverPolicy DeliverPolicy
Definition: nats.h:658
const char * Description
Definition: nats.h:655
const char * Durable
Definition: nats.h:654
const char * SampleFrequency
Definition: nats.h:669
bool FlowControl
Definition: nats.h:672
int64_t MaxRequestBatch
Definition: nats.h:677
int64_t AckWait
Definition: nats.h:662
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:660
int64_t MaxWaiting
Definition: nats.h:670
jsAckPolicy AckPolicy
Definition: nats.h:661
const char * DeliverSubject
Definition: nats.h:656
int64_t * BackOff
Redelivery durations expressed in nanoseconds.
Definition: nats.h:664
int64_t MaxRequestExpires
Maximum Pull Consumer request expiration, expressed in number of nanoseconds.
Definition: nats.h:678
int64_t Heartbeat
Heartbeat interval expressed in number of nanoseconds.
Definition: nats.h:673
int BackOffLen
Definition: nats.h:665
int64_t MaxDeliver
Definition: nats.h:663
jsReplayPolicy ReplayPolicy
Definition: nats.h:667
const char * DeliverGroup
Definition: nats.h:657
int64_t MaxAckPending
Definition: nats.h:671
const char * FilterSubject
Definition: nats.h:666
int64_t InactiveThreshold
How long the server keeps an ephemeral after detecting loss of interest, expressed in number of nanos...
Definition: nats.h:681
Definition: nats.h:815
jsSequenceInfo Delivered
Definition: nats.h:820
jsConsumerConfig * Config
Definition: nats.h:819
bool PushBound
Definition: nats.h:827
int64_t NumWaiting
Definition: nats.h:824
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:818
jsClusterInfo * Cluster
Definition: nats.h:826
int64_t NumAckPending
Definition: nats.h:822
char * Stream
Definition: nats.h:816
int64_t NumRedelivered
Definition: nats.h:823
char * Name
Definition: nats.h:817
jsSequenceInfo AckFloor
Definition: nats.h:821
uint64_t NumPending
Definition: nats.h:825
Definition: nats.h:703
uint64_t Stream
This is the stream sequence that the application should resume from.
Definition: nats.h:704
uint64_t ConsumerServer
This is the consumer sequence last sent by the server.
Definition: nats.h:706
uint64_t ConsumerClient
This is the consumer sequence that was last received by the library.
Definition: nats.h:705
Definition: nats.h:346
const char * DeliverPrefix
Definition: nats.h:348
const char * APIPrefix
Definition: nats.h:347
Definition: nats.h:480
uint64_t * Msgs
Definition: nats.h:481
uint64_t Bytes
Definition: nats.h:483
int MsgsLen
Definition: nats.h:482
Definition: nats.h:876
uint64_t NumPending
Definition: nats.h:879
jsSequencePair Sequence
Definition: nats.h:877
char * Stream
Definition: nats.h:881
char * Domain
Definition: nats.h:883
char * Consumer
Definition: nats.h:882
uint64_t NumDelivered
Definition: nats.h:878
int64_t Timestamp
Definition: nats.h:880
Definition: nats.h:932
jsPubAckErrHandler ErrHandler
Callback invoked when error encountered publishing a given message.
Definition: nats.h:934
void * ErrHandlerClosure
Closure (or user data) passed to jsPubAckErrHandler callback.
Definition: nats.h:935
int64_t StallWait
Amount of time (in milliseconds) to wait in a PublishAsync call when there is MaxPending inflight mes...
Definition: nats.h:936
int64_t MaxPending
Maximum outstanding asynchronous publishes that can be inflight at one time.
Definition: nats.h:933
bool DeletedDetails
Get the list of deleted message sequences.
Definition: nats.h:970
const char * SubjectsFilter
Get the list of subjects in this stream.
Definition: nats.h:971
uint64_t Sequence
Purge up to but not including sequence.
Definition: nats.h:960
uint64_t Keep
Number of messages to keep.
Definition: nats.h:961
const char * Subject
This is the subject to match against messages for the purge command.
Definition: nats.h:959
Definition: nats.h:947
struct jsOptions::jsOptionsStream::jsOptionsStreamInfo Info
Optional stream information retrieval options.
struct jsOptions::jsOptionsStream::jsOptionsStreamPurge Purge
Optional stream purge options.
Definition: nats.h:923
struct jsOptions::jsOptionsPublishAsync 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:926
const char * Prefix
JetStream prefix, default is "$JS.API".
Definition: nats.h:924
const char * Domain
Domain changes the domain part of JetSteam API prefix.
Definition: nats.h:925
struct jsOptions::jsOptionsStream Stream
Optional stream options.
Definition: nats.h:564
bool Offline
Definition: nats.h:567
uint64_t Lag
Definition: nats.h:569
int64_t Active
Definition: nats.h:568
char * Name
Definition: nats.h:565
bool Current
Definition: nats.h:566
Definition: nats.h:329
int TagsLen
Definition: nats.h:332
const char * Cluster
Definition: nats.h:330
const char ** Tags
Definition: nats.h:331
Definition: nats.h:904
natsMsg * Msg
Definition: nats.h:905
natsStatus Err
Definition: nats.h:906
jsErrCode ErrCode
Definition: nats.h:907
const char * ErrText
Definition: nats.h:908
Definition: nats.h:891
uint64_t Sequence
Definition: nats.h:893
bool Duplicate
Definition: nats.h:895
char * Domain
Definition: nats.h:894
char * Stream
Definition: nats.h:892
Definition: nats.h:238
const char * ExpectLastMsgId
Expected last message ID in the stream.
Definition: nats.h:242
int64_t MaxWait
Amount of time (in milliseconds) to wait for a publish response, default will the context's Wait valu...
Definition: nats.h:239
uint64_t ExpectLastSeq
Expected last message sequence in the stream.
Definition: nats.h:243
bool ExpectNoMessage
Expected no message (that is, sequence == 0) for the subject in the stream.
Definition: nats.h:245
const char * ExpectStream
Expected stream to respond from the publish call.
Definition: nats.h:241
const char * MsgId
Message ID used for de-duplication.
Definition: nats.h:240
uint64_t ExpectLastSubjectSeq
Expected last message sequence for the subject in the stream.
Definition: nats.h:244
Definition: nats.h:801
int64_t Last
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:804
uint64_t Stream
Definition: nats.h:803
uint64_t Consumer
Definition: nats.h:802
Definition: nats.h:791
uint64_t Consumer
Definition: nats.h:792
uint64_t Stream
Definition: nats.h:793
Definition: nats.h:443
jsDiscardPolicy Discard
Definition: nats.h:455
const char ** Subjects
Definition: nats.h:446
int SourcesLen
Definition: nats.h:464
const char * Description
Definition: nats.h:445
const char * Template
Definition: nats.h:459
bool DenyPurge
Restrict the ability to purge messages.
Definition: nats.h:467
jsStorageType Storage
Definition: nats.h:456
jsRetentionPolicy Retention
Definition: nats.h:448
int64_t MaxMsgs
Definition: nats.h:450
int64_t MaxConsumers
Definition: nats.h:449
const char * Name
Definition: nats.h:444
bool NoAck
Definition: nats.h:458
jsStreamSource ** Sources
Definition: nats.h:463
int32_t MaxMsgSize
Definition: nats.h:454
int64_t Duplicates
Definition: nats.h:460
int64_t MaxMsgsPerSubject
Definition: nats.h:453
int64_t MaxAge
Definition: nats.h:452
int SubjectsLen
Definition: nats.h:447
bool AllowRollup
Definition: nats.h:472
jsStreamSource * Mirror
Definition: nats.h:462
jsPlacement * Placement
Definition: nats.h:461
int64_t MaxBytes
Definition: nats.h:451
int64_t Replicas
Definition: nats.h:457
bool Sealed
Seal a stream so no messages can get our or in.
Definition: nats.h:465
bool DenyDelete
Restrict the ability to delete messages.
Definition: nats.h:466
Definition: nats.h:605
jsStreamSourceInfo ** Sources
Definition: nats.h:611
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:607
jsStreamState State
Definition: nats.h:608
jsClusterInfo * Cluster
Definition: nats.h:609
jsStreamSourceInfo * Mirror
Definition: nats.h:610
jsStreamConfig * Config
Definition: nats.h:606
int SourcesLen
Definition: nats.h:612
Definition: nats.h:365
jsExternalStream * External
Definition: nats.h:370
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:368
const char * Name
Definition: nats.h:366
uint64_t OptStartSeq
Definition: nats.h:367
const char * FilterSubject
Definition: nats.h:369
Definition: nats.h:590
int64_t Active
Definition: nats.h:594
char * Name
Definition: nats.h:591
jsExternalStream * External
Definition: nats.h:592
uint64_t Lag
Definition: nats.h:593
Definition: nats.h:542
jsLostStreamData * Lost
Definition: nats.h:554
uint64_t LastSeq
Definition: nats.h:547
int64_t Consumers
Definition: nats.h:555
int DeletedLen
Definition: nats.h:553
uint64_t Msgs
Definition: nats.h:543
jsStreamStateSubjects * Subjects
Definition: nats.h:550
uint64_t FirstSeq
Definition: nats.h:545
int64_t LastTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:548
int64_t NumSubjects
Definition: nats.h:549
uint64_t * Deleted
Definition: nats.h:552
uint64_t NumDeleted
Definition: nats.h:551
uint64_t Bytes
Definition: nats.h:544
int64_t FirstTime
UTC time expressed as number of nanoseconds since epoch.
Definition: nats.h:546
Definition: nats.h:493
uint64_t Msgs
Definition: nats.h:495
const char * Subject
Definition: nats.h:494
Definition: nats.h:529
jsStreamStateSubject * List
Definition: nats.h:530
const int Count
Definition: nats.h:531
Definition: nats.h:726
bool ManualAck
If true, the user will have to acknowledge the messages.
Definition: nats.h:771
const char * Consumer
If specified, the subscription will be bound to an existing consumer from the Stream without attempti...
Definition: nats.h:743
const char * Stream
If specified, the consumer will be bound to this stream name.
Definition: nats.h:733
bool Ordered
If true, this will be an ordered consumer.
Definition: nats.h:783
const char * Queue
Queue name for queue subscriptions.
Definition: nats.h:758
jsConsumerConfig Config
Consumer configuration.
Definition: nats.h:776
Definition: nats.h:1017
uint8_t History
Definition: nats.h:1021
const char * Bucket
Definition: nats.h:1018
int64_t MaxBytes
Definition: nats.h:1023
int32_t MaxValueSize
Definition: nats.h:1020
int Replicas
Definition: nats.h:1025
const char * Description
Definition: nats.h:1019
int64_t TTL
Definition: nats.h:1022
jsStorageType StorageType
Definition: nats.h:1024
A list of KeyValue store entries.
Definition: nats.h:1083
const int Count
Definition: nats.h:1085
kvEntry ** Entries
Definition: nats.h:1084
A list of KeyValue store keys.
Definition: nats.h:1107
const int Count
Definition: nats.h:1109
char ** Keys
Definition: nats.h:1108
Definition: nats.h:1049
int64_t Timeout
Definition: nats.h:1051
int64_t DeleteMarkersOlderThan
Definition: nats.h:1061
Definition: nats.h:1035
bool IgnoreDeletes
Definition: nats.h:1036
bool IncludeHistory
Definition: nats.h:1037
int64_t Timeout
How long to wait (in milliseconds) for some operations to complete.
Definition: nats.h:1039
bool MetaOnly
Definition: nats.h:1038
A list of NATS messages.
Definition: nats.h:206
const int Count
Definition: nats.h:208
natsMsg ** Msgs
Definition: nats.h:207