NATS C Client with JetStream and Streaming support  3.8.0
The nats.io C Client, Supported by Synadia Communications Inc.
Loading...
Searching...
No Matches
nats.h
Go to the documentation of this file.
1// Copyright 2015-2023 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 // 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//
152typedef struct __natsConnection natsConnection;
153
159typedef struct __natsStatistics natsStatistics;
160
165typedef struct __natsSubscription natsSubscription;
166
172typedef struct __natsMsg natsMsg;
173
178typedef struct __natsOptions natsOptions;
179
187typedef char natsInbox;
188
212typedef struct natsMsgList
213{
215 int Count;
216
218
224typedef struct natsMetadata
225{
226 // User-provided metadata for the stream, encoded as an array of {"key", "value",...}
227 const char **List;
228 // Number of key/value pairs in Metadata, 1/2 of the length of the array.
229 int Count;
231
240typedef struct __jsCtx jsCtx;
241
257typedef struct jsPubOptions
258{
259 int64_t MaxWait;
260 const char *MsgId;
261 const char *ExpectStream;
262 const char *ExpectLastMsgId;
263 uint64_t ExpectLastSeq;
266
268
279
283typedef enum
284{
287
289
293typedef enum
294{
297
299
308
322
326typedef enum
327{
331
332
334
344
345
357typedef struct jsPlacement
358{
359 const char *Cluster;
360 const char **Tags;
362
364
374typedef struct jsExternalStream
375{
376 const char *APIPrefix;
377 const char *DeliverPrefix;
378
380
393typedef struct jsStreamSource
394{
395 const char *Name;
396 uint64_t OptStartSeq;
397 int64_t OptStartTime;
398 const char *FilterSubject;
400 // Domain and External are mutually exclusive.
401 // If Domain is set, an External value will be created with
402 // the APIPrefix constructed based on the Domain value.
403 const char *Domain;
404
406
410typedef struct jsRePublish
411{
412 const char *Source;
413 const char *Destination;
415
417
427
437
517typedef struct jsStreamConfig {
518 const char *Name;
519 const char *Description;
520 const char **Subjects;
524 int64_t MaxMsgs;
525 int64_t MaxBytes;
526 int64_t MaxAge;
528 int32_t MaxMsgSize;
531 int64_t Replicas;
532 bool NoAck;
533 const char *Template;
534 int64_t Duplicates;
539 bool Sealed;
547
548 // Allow republish of the message after being sequenced and stored.
550
551 // Allow higher performance, direct access to get individual messages. E.g. KeyValue
553 // Allow higher performance and unified direct access for mirrors as well.
555
556 // Allow KV like semantics to also discard new on a per subject basis
558
581 uint64_t FirstSeq;
585
589typedef struct jsLostStreamData
590{
591 uint64_t *Msgs;
593 uint64_t Bytes;
594
596
603{
604 const char *Subject;
605 uint64_t Msgs;
606
608
644
651typedef struct jsStreamState
652{
653 uint64_t Msgs;
654 uint64_t Bytes;
655 uint64_t FirstSeq;
656 int64_t FirstTime;
657 uint64_t LastSeq;
658 int64_t LastTime;
659 int64_t NumSubjects;
661 uint64_t NumDeleted;
662 uint64_t *Deleted;
665 int64_t Consumers;
666
668
673typedef struct jsPeerInfo
674{
675 char *Name;
678 int64_t Active;
679 uint64_t Lag;
680
682
695
710
714typedef struct jsStreamAlternate
715{
716 const char *Name;
717 const char *Domain;
718 const char *Cluster;
719
721
741
755
763typedef struct jsStreamNamesList
764{
765 char **List;
766 int Count;
767
769
813typedef struct jsConsumerConfig
814{
815 const char *Name;
816 const char *Durable;
817 const char *Description;
819 uint64_t OptStartSeq;
820 int64_t OptStartTime;
822 int64_t AckWait;
823 int64_t MaxDeliver;
824 int64_t *BackOff;
826 const char *FilterSubject;
828 uint64_t RateLimit;
829 const char *SampleFrequency;
830 int64_t MaxWaiting;
833 int64_t Heartbeat;
835
836 // Pull based options.
840
841 // Push based options.
842 const char *DeliverSubject;
843 const char *DeliverGroup;
844
845 // Ephemeral inactivity threshold.
847
848 // Generally inherited by parent stream and other markers, now can be configured directly.
849 int64_t Replicas;
850 // Force memory storage.
852
853 // Configuration options introduced in 2.10
854
855 // Multiple filter subjects
856 const char **FilterSubjects;
858
859 // User-provided metadata for the consumer, encoded as an array of {"key", "value",...}
862
887
903typedef struct jsSubOptions
904{
911 const char *Stream;
921 const char *Consumer;
936 const char *Queue;
961 bool Ordered;
962
964
968typedef struct jsSequencePair
969{
970 uint64_t Consumer;
971 uint64_t Stream;
972
974
978typedef struct jsSequenceInfo
979{
980 uint64_t Consumer;
981 uint64_t Stream;
982 int64_t Last;
983
985
1008
1022
1031{
1032 char **List;
1034
1036
1040typedef struct jsAPIStats
1041{
1042 uint64_t Total;
1043 uint64_t Errors;
1044
1046
1062
1063typedef struct jsTier
1064{
1065 const char *Name;
1066 uint64_t Memory;
1067 uint64_t Store;
1068 int64_t Streams;
1069 int64_t Consumers;
1071
1073
1090
1109
1113typedef struct jsPubAck
1114{
1115 char *Stream;
1116 uint64_t Sequence;
1117 char *Domain;
1119
1121
1134
1135#ifndef BUILD_IN_DOXYGEN
1136// Forward declarations
1137typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
1138typedef void (*jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure);
1139#endif
1140
1151{
1152 uint64_t Sequence;
1153 const char *NextBySubject;
1154 const char *LastBySubject;
1155
1157
1163typedef struct jsFetchRequest
1164{
1165 int64_t Expires;
1166 int Batch;
1167 int64_t MaxBytes;
1168 bool NoWait;
1169 int64_t Heartbeat;
1170
1172
1178typedef struct jsOptions
1179{
1180 const char *Prefix;
1181 const char *Domain;
1182 int64_t Wait;
1183
1188 {
1189 int64_t MaxPending;
1190
1191 // If jsPubAckHandler is specified, the callback will be invoked
1192 // for every asynchronous published message, either as a positive
1193 // result, or with the error encountered when publishing that
1194 // message. If this callback is specified, ErrHandler (see below)
1195 // will be ignored.
1198
1199 // This callback is invoked for messages published asynchronously
1200 // when an error is returned by the server or if the library has
1201 // timed-out waiting for an acknowledgment back from the server
1202 // (if publish uses the jsPubOptions.MaxWait).
1205
1206 int64_t StallWait;
1207
1209
1217 {
1228 {
1229 const char *Subject;
1230 uint64_t Sequence;
1231 uint64_t Keep;
1232
1234
1244
1246
1248
1252typedef struct __kvStore kvStore;
1253
1257typedef struct __kvEntry kvEntry;
1258
1262typedef struct __kvStatus kvStatus;
1263
1267typedef struct __kvWatcher kvWatcher;
1268
1280
1302
1316
1322typedef struct kvPurgeOptions
1323{
1324 // How long to wait (in milliseconds) for some operations to complete.
1325 int64_t Timeout;
1326
1327 // When calling kvStore_PurgeDeletes(), all keys that have a delete or
1328 // purge marker as the last entry are gathered and then those keys
1329 // are purged of their content, including the marker.
1330 // Starting with NATS C client v3.3.0, if this option is not specified,
1331 // only the markers older than 30 minutes will be deleted. Use this
1332 // option to set the limit or a negative value to force removal of
1333 // markers regardless of their age.
1334 // The value is expressed as a time in nanoseconds.
1336
1338
1356typedef struct kvEntryList
1357{
1360
1362
1380typedef struct kvKeysList
1381{
1382 char **Keys;
1384
1386
1387#if defined(NATS_HAS_STREAMING)
1392typedef struct __stanConnection stanConnection;
1393
1398typedef struct __stanSubscription stanSubscription;
1399
1404typedef struct __stanMsg stanMsg;
1405
1410typedef struct __stanConnOptions stanConnOptions;
1411
1416typedef struct __stanSubOptions stanSubOptions;
1417#endif
1418
1419 // end of typesGroup
1420
1421//
1422// Callbacks.
1423//
1424
1447typedef void (*natsMsgHandler)(
1448 natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure);
1449
1464 natsConnection *nc, void *closure);
1465
1472typedef void (*natsErrHandler)(
1473 natsConnection *nc, natsSubscription *subscription, natsStatus err,
1474 void *closure);
1475
1490 void **userData,
1491 void *loop,
1492 natsConnection *nc,
1493 natsSock socket);
1494
1505 void *userData,
1506 bool add);
1507
1518 void *userData,
1519 bool add);
1520
1529 void *userData);
1530
1553 char **userJWT,
1554 char **customErrTxt,
1555 void *closure);
1556
1557
1584 char **customErrTxt,
1585 unsigned char **signature,
1586 int *signatureLength,
1587 const char *nonce,
1588 void *closure);
1589
1598typedef const char* (*natsTokenHandler)(void *closure);
1599
1600
1608typedef void (*natsOnCompleteCB)(void *closure);
1609
1630typedef int64_t (*natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure);
1631
1632#ifdef BUILD_IN_DOXYGEN
1666typedef void (*jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure);
1667
1709typedef void (*jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure);
1710#endif
1711
1712#if defined(NATS_HAS_STREAMING)
1721typedef void (*stanPubAckHandler)(const char *guid, const char *error, void *closure);
1722
1732typedef void (*stanMsgHandler)(
1733 stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure);
1734
1742 stanConnection *sc, const char* errorTxt, void *closure);
1743#endif
1744
1745 // end of callbacksGroup
1746
1747//
1748// Functions.
1749//
1776nats_Open(int64_t lockSpinCount);
1777
1778
1783NATS_EXTERN const char*
1785
1793NATS_EXTERN uint32_t
1795
1796#ifdef BUILD_IN_DOXYGEN
1812#else
1813
1814#define nats_CheckCompatibility() nats_CheckCompatibilityImpl(NATS_VERSION_REQUIRED_NUMBER, \
1815 NATS_VERSION_NUMBER, \
1816 NATS_VERSION_STRING)
1817
1818NATS_EXTERN bool
1819nats_CheckCompatibilityImpl(uint32_t reqVerNumber, uint32_t verNumber, const char *verString);
1820
1821#endif
1822
1827NATS_EXTERN int64_t
1829
1835NATS_EXTERN int64_t
1837
1845NATS_EXTERN void
1846nats_Sleep(int64_t sleepTime);
1847
1860NATS_EXTERN const char*
1862
1872nats_GetLastErrorStack(char *buffer, size_t bufLen);
1873
1894NATS_EXTERN void
1896
1928
1939NATS_EXTERN void
1941
1967nats_Sign(const char *encodedSeed,
1968 const char *input,
1969 unsigned char **signature,
1970 int *signatureLength);
1971
1992NATS_EXTERN void
1994
2041nats_CloseAndWait(int64_t timeout);
2042
2043 // end of libraryGroup
2044
2060NATS_EXTERN const char*
2062
2063 // end of statusGroup
2064
2084
2103 uint64_t *inMsgs, uint64_t *inBytes,
2104 uint64_t *outMsgs, uint64_t *outBytes,
2105 uint64_t *reconnects);
2106
2113NATS_EXTERN void
2115
2116 // end of statsGroup
2117
2144
2165/*
2166 * The above is for doxygen. The proper syntax for username/password
2167 * is without the '\' character:
2168 *
2169 * nats://localhost:4222
2170 * nats://user@localhost:4222
2171 * nats://user:password@localhost:4222
2172 */
2174natsOptions_SetURL(natsOptions *opts, const char *url);
2175
2191natsOptions_SetServers(natsOptions *opts, const char** servers, int serversCount);
2192
2219natsOptions_SetUserInfo(natsOptions *opts, const char *user, const char *password);
2220
2246natsOptions_SetToken(natsOptions *opts, const char *token);
2247
2265 void *closure);
2266
2278
2292natsOptions_SetTimeout(natsOptions *opts, int64_t timeout);
2293
2302natsOptions_SetName(natsOptions *opts, const char *name);
2303
2315
2331
2358natsOptions_SetCATrustedCertificates(natsOptions *opts, const char *certificates);
2359
2376 const char *certsFileName,
2377 const char *keyFileName);
2378
2392 const char *cert,
2393 const char *key);
2394
2411natsOptions_SetCiphers(natsOptions *opts, const char *ciphers);
2412
2427natsOptions_SetCipherSuites(natsOptions *opts, const char *ciphers);
2428
2440
2453
2466
2479
2491
2505
2519
2533
2543
2558natsOptions_SetReconnectWait(natsOptions *opts, int64_t reconnectWait);
2559
2584natsOptions_SetReconnectJitter(natsOptions *opts, int64_t jitter, int64_t jitterTLS);
2585
2607 void *closure);
2608
2623
2639
2656 void *closure);
2657
2672 void *closure);
2673
2692 natsConnectionHandler disconnectedCb,
2693 void *closure);
2694
2712 natsConnectionHandler reconnectedCb,
2713 void *closure);
2714
2731 natsConnectionHandler discoveredServersCb,
2732 void *closure);
2733
2749
2768 natsConnectionHandler lameDuckCb,
2769 void *closure);
2770
2790 void *loop,
2791 natsEvLoop_Attach attachCb,
2794 natsEvLoop_Detach detachCb);
2795
2820
2845
2875
2887
2904
2925
2981 natsConnectionHandler connectedCb, void* closure);
2982
3013 natsUserJWTHandler ujwtCB,
3014 void *ujwtClosure,
3016 void *sigClosure);
3017
3058 const char *userOrChainedFile,
3059 const char *seedFile);
3060
3075 const char *jwtAndSeedContent);
3076
3102 const char *pubKey,
3104 void *sigClosure);
3105
3132 const char *pubKey,
3133 const char *seedFile);
3134
3150
3187
3204natsOptions_SetCustomInboxPrefix(natsOptions *opts, const char *inboxPrefix);
3205
3221
3229NATS_EXTERN void
3231
3232 // end of optsGroup
3233
3234#if defined(NATS_HAS_STREAMING)
3270
3294
3313
3325
3337
3347
3348
3364stanConnOptions_SetMaxPubAcksInflight(stanConnOptions *opts, int maxPubAcksInflight, float percentage);
3365
3382stanConnOptions_SetPings(stanConnOptions *opts, int interval, int maxOut);
3383
3396
3404NATS_EXTERN void
3406
3407 // end of stanConnOptsGroup
3408
3441
3461stanSubOptions_SetDurableName(stanSubOptions *opts, const char *durableName);
3462
3478
3492
3510
3527
3541
3552
3562
3579
3587NATS_EXTERN void
3589
3590 // end of stanSubOptsGroup
3591#endif
3592
3614
3621NATS_EXTERN void
3623
3624 // end of inboxGroup
3625
3644NATS_EXTERN void
3646
3665natsMsg_Create(natsMsg **newMsg, const char *subj, const char *reply,
3666 const char *data, int dataLen);
3667
3676NATS_EXTERN const char*
3678
3688NATS_EXTERN const char*
3690
3706NATS_EXTERN const char*
3708
3715NATS_EXTERN int
3717
3734natsMsgHeader_Set(natsMsg *msg, const char *key, const char *value);
3735
3752natsMsgHeader_Add(natsMsg *msg, const char *key, const char *value);
3753
3773natsMsgHeader_Get(natsMsg *msg, const char *key, const char **value);
3774
3809natsMsgHeader_Values(natsMsg *msg, const char *key, const char* **values, int *count);
3810
3841natsMsgHeader_Keys(natsMsg *msg, const char* **keys, int *count);
3842
3857natsMsgHeader_Delete(natsMsg *msg, const char *key);
3858
3884NATS_EXTERN bool
3886
3893NATS_EXTERN void
3895
3896 // end of msgGroup
3897
3898#if defined(NATS_HAS_STREAMING)
3911NATS_EXTERN uint64_t
3913
3920NATS_EXTERN int64_t
3922
3931NATS_EXTERN bool
3933
3949NATS_EXTERN const char*
3951
3958NATS_EXTERN int
3960
3967NATS_EXTERN void
3969
3970 // end of stanMsgGroup
3971#endif
3972
4005
4016NATS_EXTERN void
4018
4029NATS_EXTERN void
4031
4052
4059NATS_EXTERN bool
4061
4068NATS_EXTERN bool
4070
4077NATS_EXTERN bool
4079
4090
4102NATS_EXTERN int
4104
4122
4137
4147NATS_EXTERN int64_t
4149
4161
4172natsConnection_GetConnectedUrl(natsConnection *nc, char *buffer, size_t bufferSize);
4173
4184natsConnection_GetConnectedServerId(natsConnection *nc, char *buffer, size_t bufferSize);
4185
4207natsConnection_GetServers(natsConnection *nc, char ***servers, int *count);
4208
4230natsConnection_GetDiscoveredServers(natsConnection *nc, char ***servers, int *count);
4231
4245natsConnection_GetLastError(natsConnection *nc, const char **lastError);
4246
4262
4283
4303
4318 const unsigned char *message, int messageLen,
4319 unsigned char sig[64]);
4320
4341
4354
4364
4386
4396NATS_EXTERN void
4398
4406NATS_EXTERN void
4408
4409 // end of connMgtGroup
4410
4429 const void *data, int dataLen);
4430
4447 const char *str);
4448
4461
4476 const char *reply, const void *data, int dataLen);
4477
4496 const char *reply, const char *str);
4497
4516natsConnection_Request(natsMsg **replyMsg, natsConnection *nc, const char *subj,
4517 const void *data, int dataLen, int64_t timeout);
4518
4542 const char *subj, const char *str,
4543 int64_t timeout);
4544
4561 natsMsg *requestMsg, int64_t timeout);
4562
4563 // end of connPubGroup
4564
4587 const char *subject, natsMsgHandler cb,
4588 void *cbClosure);
4589
4622 const char *subject, int64_t timeout,
4623 natsMsgHandler cb, void *cbClosure);
4624
4637 const char *subject);
4638
4658 const char *subject, const char *queueGroup,
4659 natsMsgHandler cb, void *cbClosure);
4660
4695 const char *subject, const char *queueGroup,
4696 int64_t timeout, natsMsgHandler cb, void *cbClosure);
4697
4711 const char *subject, const char *queueGroup);
4712
4713 // end of connSubGroup
4714
4715 // end of connGroup
4716
4737
4762 int64_t timeout);
4763
4774
4788
4800
4809NATS_EXTERN int64_t
4811
4822NATS_EXTERN const char*
4824
4846natsSubscription_SetPendingLimits(natsSubscription *sub, int msgLimit, int bytesLimit);
4847
4868natsSubscription_GetPendingLimits(natsSubscription *sub, int *msgLimit, int *bytesLimit);
4869
4886
4897
4915
4930
4939
4968 int *pendingMsgs,
4969 int *pendingBytes,
4970 int *maxPendingMsgs,
4971 int *maxPendingBytes,
4972 int64_t *deliveredMsgs,
4973 int64_t *droppedMsgs);
4974
4983NATS_EXTERN bool
4985
5005
5058
5083
5111
5142
5150NATS_EXTERN void
5152
5153 // end of subGroup
5154
5155#if defined(NATS_HAS_STREAMING)
5197stanConnection_Connect(stanConnection **sc, const char *clusterID, const char *clientID,
5198 stanConnOptions *options);
5199
5224
5249NATS_EXTERN void
5251
5264
5274
5275 // end of stanConnMgtGroup
5276
5295 const void *data, int dataLen);
5296
5322 const void *data, int dataLen,
5323 stanPubAckHandler ah, void *ahClosure);
5324
5325 // end of stanConnPubGroup
5326
5351 const char *channel, stanMsgHandler cb,
5352 void *cbClosure, stanSubOptions *options);
5353
5375 const char *channel, const char *queueGroup,
5376 stanMsgHandler cb, void *cbClosure, stanSubOptions *options);
5377
5378 // end of stanConnSubGroup
5379
5380 // end of stanConnGroup
5381
5412
5424
5446
5459
5467NATS_EXTERN void
5469
5470 // end of stanSubGroup
5471#endif
5472
5488
5505
5512NATS_EXTERN void
5514
5530
5539
5548
5557
5566
5588
5610
5634js_PurgeStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5635
5647js_DeleteStream(jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5648
5667js_GetMsg(natsMsg **msg, jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5668
5687js_GetLastMsg(natsMsg **msg, jsCtx *js, const char *stream, const char *subject, jsOptions *opts, jsErrCode *errCode);
5688
5698
5722js_DirectGetMsg(natsMsg **msg, jsCtx *js, const char *stream, jsOptions *opts, jsDirectGetMsgOptions *dgOpts);
5723
5741js_DeleteMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5742
5758js_EraseMsg(jsCtx *js, const char *stream, uint64_t seq, jsOptions *opts, jsErrCode *errCode);
5759
5787js_GetStreamInfo(jsStreamInfo **si, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5788
5795NATS_EXTERN void
5797
5814
5824NATS_EXTERN void
5826
5843
5853NATS_EXTERN void
5855
5866
5888 const char *stream, jsConsumerConfig *cfg,
5889 jsOptions *opts, jsErrCode *errCode);
5890
5912 const char *stream, jsConsumerConfig *cfg,
5913 jsOptions *opts, jsErrCode *errCode);
5914
5930 const char *stream, const char *consumer,
5931 jsOptions *opts, jsErrCode *errCode);
5932
5945js_DeleteConsumer(jsCtx *js, const char *stream, const char *consumer,
5946 jsOptions *opts, jsErrCode *errCode);
5947
5954NATS_EXTERN void
5956
5972js_Consumers(jsConsumerInfoList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
5973
5983NATS_EXTERN void
5985
6001js_ConsumerNames(jsConsumerNamesList **list, jsCtx *js, const char *stream, jsOptions *opts, jsErrCode *errCode);
6002
6012NATS_EXTERN void
6014
6031
6038NATS_EXTERN void
6040
6041 // end of jsAssetsGroup
6042
6058
6075js_Publish(jsPubAck **pubAck, jsCtx *js, const char *subj, const void *data, int dataLen,
6076 jsPubOptions *opts, jsErrCode *errCode);
6077
6099 jsPubOptions *opts, jsErrCode *errCode);
6100
6107NATS_EXTERN void
6109
6121js_PublishAsync(jsCtx *js, const char *subj, const void *data, int dataLen,
6122 jsPubOptions *opts);
6123
6149
6163
6214
6215 // end of jsPubGroup
6216
6232
6279js_Subscribe(natsSubscription **sub, jsCtx *js, const char *subject,
6280 natsMsgHandler cb, void* cbClosure,
6281 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6282
6298js_SubscribeSync(natsSubscription **sub, jsCtx *js, const char *subject,
6299 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6300
6323js_PullSubscribe(natsSubscription **sub, jsCtx *js, const char *subject, const char *durable,
6324 jsOptions *opts, jsSubOptions *subOpts, jsErrCode *errCode);
6325
6345natsSubscription_Fetch(natsMsgList *list, natsSubscription *sub, int batch, int64_t timeout,
6346 jsErrCode *errCode);
6347
6356
6371
6384 jsOptions *opts, jsErrCode *errCode);
6385
6415
6416 // end of jsSubGroup
6417
6440
6447NATS_EXTERN void
6449
6460
6474
6487
6501natsMsg_NakWithDelay(natsMsg *msg, int64_t delay, jsOptions *opts);
6502
6513
6524
6534NATS_EXTERN uint64_t
6536
6546NATS_EXTERN int64_t
6548
6549 // end of jsMsg
6550
6551 // end of jsGroup
6552
6583
6600
6617js_KeyValue(kvStore **new_kv, jsCtx *js, const char *bucket);
6618
6629js_DeleteKeyValue(jsCtx *js, const char *bucket);
6630
6638NATS_EXTERN void
6640
6641 // end of kvGroupMgt
6642
6659NATS_EXTERN const char*
6661
6668NATS_EXTERN const char*
6670
6677NATS_EXTERN const void*
6679
6686NATS_EXTERN int
6688
6696NATS_EXTERN const char*
6698
6705NATS_EXTERN uint64_t
6707
6714NATS_EXTERN int64_t
6716
6726NATS_EXTERN uint64_t
6728
6739
6746NATS_EXTERN void
6748
6749 // end of kvEntry
6750
6762kvStore_Get(kvEntry **new_entry, kvStore *kv, const char *key);
6763
6777kvStore_GetRevision(kvEntry **new_entry, kvStore *kv, const char *key, uint64_t revision);
6778
6790kvStore_Put(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
6791
6806kvStore_PutString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
6807
6819kvStore_Create(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len);
6820
6835kvStore_CreateString(uint64_t *rev, kvStore *kv, const char *key, const char *data);
6836
6849kvStore_Update(uint64_t *rev, kvStore *kv, const char *key, const void *data, int len, uint64_t last);
6850
6866kvStore_UpdateString(uint64_t *rev, kvStore *kv, const char *key, const char *data, uint64_t last);
6867
6876kvStore_Delete(kvStore *kv, const char *key);
6877
6887kvStore_Purge(kvStore *kv, const char *key, kvPurgeOptions *opts);
6888
6898
6908
6928
6946kvStore_Watch(kvWatcher **new_watcher, kvStore *kv, const char *keys, kvWatchOptions *opts);
6947
6964
6985
6997NATS_EXTERN void
6999
7023kvStore_History(kvEntryList *list, kvStore *kv, const char *key, kvWatchOptions *opts);
7024
7036NATS_EXTERN void
7038
7048NATS_EXTERN const char*
7050
7051// PurgeDeletes
7052
7064
7091kvWatcher_Next(kvEntry **new_entry, kvWatcher *w, int64_t timeout);
7092
7104
7111NATS_EXTERN void
7113
7114 // end of kvWatcher
7115
7132NATS_EXTERN const char*
7134
7141NATS_EXTERN uint64_t
7143
7150NATS_EXTERN int64_t
7152
7159NATS_EXTERN int64_t
7161
7168NATS_EXTERN int64_t
7170
7177NATS_EXTERN uint64_t
7179
7186NATS_EXTERN void
7188
7189 // end of kvStatus
7190
7191 // end of kvGroup
7192
7193 // end of funcGroup
7194
7195//
7196// Microservices.
7197//
7198
7244typedef struct micro_client_s microClient;
7245
7249typedef struct __for_forward_compatibility_only microClientConfig;
7250
7260typedef struct micro_endpoint_s microEndpoint;
7261
7270
7281
7291
7304typedef struct micro_error_s microError;
7305
7313typedef struct micro_group_s microGroup;
7314
7320typedef struct micro_request_s microRequest;
7321
7333typedef struct micro_service_s microService;
7334
7345
7356
7364
7365 // end of microTypes
7366
7385typedef microError *(*microRequestHandler)(microRequest *req);
7386
7410
7422typedef void (*microDoneHandler)(microService *m);
7423
7424 // end of microCallbacks
7425
7437{
7443 const char *Name;
7444
7454 const char *Subject;
7455
7461
7466
7471 void *State;
7472};
7473
7478{
7482 const char *Name;
7483
7487 const char *Subject;
7488
7494};
7495
7500{
7501 const char *Name;
7502 const char *Subject;
7503
7508
7513 int64_t NumErrors;
7514
7519
7524
7529
7534};
7535
7612
7619{
7623 const char *Type;
7624
7628 const char *Name;
7629
7633 const char *Version;
7634
7638 const char *Description;
7639
7643 const char *Id;
7644
7649
7654
7659};
7660
7665{
7669 const char *Type;
7670
7674 const char *Name;
7675
7679 const char *Version;
7680
7684 const char *Id;
7685
7689 int64_t Started;
7690
7695
7700};
7701
7702 // end of microStructs
7703
7715#define MICRO_API_PREFIX "$SRV"
7716
7720#define MICRO_INFO_RESPONSE_TYPE "io.nats.micro.v1.info_response"
7721
7725#define MICRO_INFO_VERB "INFO"
7726
7730#define MICRO_PING_RESPONSE_TYPE "io.nats.micro.v1.ping_response"
7731
7735#define MICRO_PING_VERB "PING"
7736
7740#define MICRO_STATS_RESPONSE_TYPE "io.nats.micro.v1.stats_response"
7741
7745#define MICRO_STATS_VERB "STATS"
7746
7751#define MICRO_STATUS_HDR "Nats-Status"
7752
7757#define MICRO_ERROR_HDR "Nats-Service-Error"
7758
7763#define MICRO_ERROR_CODE_HDR "Nats-Service-Error-Code"
7764
7765 // end of microConstants
7766
7798
7814
7831microService_AddGroup(microGroup **new_group, microService *m, const char *prefix);
7832
7846
7857
7872
7882NATS_EXTERN void *
7884
7899
7908NATS_EXTERN bool
7910
7924
7942
7943 // end of microServiceFunctions
7944
7967microGroup_AddGroup(microGroup **new_group, microGroup *parent, const char *prefix);
7968
7984
7985 // end of microGroupFunctions
7986
8007microRequest_AddHeader(microRequest *req, const char *key, const char *value);
8008
8020
8031
8045NATS_EXTERN const char *
8047
8056NATS_EXTERN int
8058
8068NATS_EXTERN void *
8070
8088microRequest_GetHeaderKeys(microRequest *req, const char ***keys, int *count);
8089
8102microRequest_GetHeaderValue(microRequest *req, const char *key, const char **value);
8103
8120microRequest_GetHeaderValues(microRequest *req, const char *key, const char ***values, int *count);
8121
8130
8140NATS_EXTERN const char *
8142
8151
8160NATS_EXTERN void *
8162
8170NATS_EXTERN const char *
8172
8183microRequest_Respond(microRequest *req, const char *data, size_t len);
8184
8201
8246microRequest_RespondCustom(microRequest *req, microError *err, const char *data, size_t len);
8247
8262microRequest_SetHeader(microRequest *req, const char *key, const char *value);
8263
8264 // end of microRequestFunctions
8265
8282micro_Errorf(const char *format, ...);
8283
8296micro_ErrorfCode(int code, const char *format, ...);
8297
8306
8313NATS_EXTERN int
8315
8320NATS_EXTERN void
8322
8323#define microError_Ignore(__err) microError_Destroy(__err)
8324
8334
8346NATS_EXTERN const char *
8347microError_String(microError *err, char *buf, size_t len);
8348
8363microError_Wrapf(microError *err, const char *format, ...);
8364
8365 // end of microErrorFunctions
8366
8383
8389NATS_EXTERN void
8391
8405microClient_DoRequest(natsMsg **reply, microClient *client, const char *subject, const char *data, int data_len);
8406
8407 // end of microClientFunctions
8408
8420NATS_EXTERN void
8422
8428NATS_EXTERN void
8430
8431 // end of microCleanupFunctions
8432
8433 // end of microFunctions
8434
8435 // end of microGroup
8436
8473#ifdef __cplusplus
8474}
8475#endif
8476
8477#endif /* NATS_H_ */
void(* natsOnCompleteCB)(void *closure)
Callback used to notify that an object lifecycle is complete.
Definition nats.h:1608
natsStatus(* natsEvLoop_Attach)(void **userData, void *loop, natsConnection *nc, natsSock socket)
Attach this connection to the external event loop.
Definition nats.h:1489
natsStatus(* natsUserJWTHandler)(char **userJWT, char **customErrTxt, void *closure)
Callback used to fetch and return account signed user JWT.
Definition nats.h:1552
natsStatus(* natsEvLoop_WriteAddRemove)(void *userData, bool add)
Write event needs to be added or removed.
Definition nats.h:1517
int64_t(* natsCustomReconnectDelayHandler)(natsConnection *nc, int attempts, void *closure)
Callback used to specify how long to wait between reconnects.
Definition nats.h:1630
const char *(* natsTokenHandler)(void *closure)
Callback used to build a token on connections and reconnections.
Definition nats.h:1598
void(* jsPubAckHandler)(jsCtx *js, natsMsg *msg, jsPubAck *pa, jsPubAckErr *pae, void *closure)
Callback used to process asynchronous publish responses from JetStream.
Definition nats.h:1709
void(* jsPubAckErrHandler)(jsCtx *js, jsPubAckErr *pae, void *closure)
Callback used to process asynchronous publish errors from JetStream.
Definition nats.h:1666
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:1472
natsStatus(* natsEvLoop_Detach)(void *userData)
Detach from the event loop.
Definition nats.h:1528
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:1583
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:1741
void(* natsConnectionHandler)(natsConnection *nc, void *closure)
Callback used to notify the user of asynchronous connection events.
Definition nats.h:1463
void(* natsMsgHandler)(natsConnection *nc, natsSubscription *sub, natsMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition nats.h:1447
void(* stanPubAckHandler)(const char *guid, const char *error, void *closure)
Callback used to notify of an asynchronous publish result.
Definition nats.h:1721
natsStatus(* natsEvLoop_ReadAddRemove)(void *userData, bool add)
Read event needs to be added or removed.
Definition nats.h:1504
void(* stanMsgHandler)(stanConnection *sc, stanSubscription *sub, const char *channel, stanMsg *msg, void *closure)
Callback used to deliver messages to the application.
Definition nats.h:1732
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.
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 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 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_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 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 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.
void(* microErrorHandler)(microService *m, microEndpoint *ep, natsStatus s)
Callback type for async error notifications.
Definition nats.h:7409
microError *(* microRequestHandler)(microRequest *req)
Callback type for request processing.
Definition nats.h:7385
void(* microDoneHandler)(microService *m)
Callback type for Done (service stopped) notifications.
Definition nats.h:7422
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 natsStatus microError_Status(microError *err)
Returns the NATS status associated with the error.
NATS_EXTERN int microError_Code(microError *err)
returns the int code of the error.
NATS_EXTERN microError * micro_Errorf(const char *format,...)
creates a new microError, with a printf-like formatted message.
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 * micro_ErrorFromStatus(natsStatus s)
Wraps a NATS status into a microError, if not a NATS_OK.
NATS_EXTERN microError * microError_Wrapf(microError *err, const char *format,...)
Wraps an exising microError with a higher printf-like formatted message.
NATS_EXTERN microError * microGroup_AddGroup(microGroup **new_group, microGroup *parent, const char *prefix)
Adds a sub-group to microGroup.
NATS_EXTERN microError * microGroup_AddEndpoint(microGroup *g, microEndpointConfig *config)
Adds an endpoint to a microGroup and starts listening for messages.
NATS_EXTERN microService * microRequest_GetService(microRequest *req)
Returns the pointer to the microservice associated with the request.
NATS_EXTERN int microRequest_GetDataLength(microRequest *req)
Returns the number of data bytes in the the request.
NATS_EXTERN microError * microRequest_RespondError(microRequest *req, microError *err)
Respond to a request with a simple error.
NATS_EXTERN const char * microRequest_GetSubject(microRequest *req)
Returns the subject of the request message.
NATS_EXTERN const char * microRequest_GetData(microRequest *req)
Returns the data in the the request, as a byte array.
NATS_EXTERN microError * microRequest_AddHeader(microRequest *req, const char *key, const char *value)
Adds a header to the underlying NATS request message.
NATS_EXTERN natsConnection * microRequest_GetConnection(microRequest *req)
Returns the connection associated with the request.
NATS_EXTERN natsMsg * microRequest_GetMsg(microRequest *req)
Get 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_GetHeaderKeys(microRequest *req, const char ***keys, int *count)
Gets the list of all header keys in the NATS message underlying the request.
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 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_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 microError * microRequest_DeleteHeader(microRequest *req, const char *key)
Deletes a header from the underlying NATS request message.
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 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 const char * microRequest_GetReply(microRequest *req)
Returns the reply subject set in this message.
NATS_EXTERN microError * microService_GetStats(microServiceStats **new_stats, microService *m)
Returns run-time statistics for a microservice.
NATS_EXTERN natsConnection * microService_GetConnection(microService *m)
Returns the connection associated with the service. If the service was successfully started,...
NATS_EXTERN microError * micro_AddService(microService **new_microservice, natsConnection *nc, microServiceConfig *config)
Creates and starts a new microservice.
NATS_EXTERN microError * microService_Destroy(microService *m)
Destroys a microservice, stopping it first if needed.
NATS_EXTERN microError * microService_Stop(microService *m)
Stops a running microservice.
NATS_EXTERN microError * microService_AddGroup(microGroup **new_group, microService *m, const char *prefix)
Adds an group (prefix) to a microservice.
NATS_EXTERN bool microService_IsStopped(microService *m)
Checks if the service is stopped.
NATS_EXTERN microError * microService_AddEndpoint(microService *m, microEndpointConfig *config)
Adds an endpoint to a microservice and starts listening for messages.
NATS_EXTERN microError * microService_GetInfo(microServiceInfo **new_info, microService *m)
Returns a microServiceInfo for a microservice.
NATS_EXTERN microError * microService_Run(microService *m)
Waits for a microservice to stop.
NATS_EXTERN void * microService_GetState(microService *m)
Returns the pointer to state data (closure). It is originally provided in microServiceConfig....
struct micro_client_s microClient
The Microservice client.
Definition nats.h:7244
struct micro_group_s microGroup
a collection of endpoints and other groups, with a common prefix to their subjects and names.
Definition nats.h:7313
struct micro_request_s microRequest
a request received by a microservice endpoint.
Definition nats.h:7320
struct micro_error_s microError
the Microservice error object.
Definition nats.h:7304
struct __for_forward_compatibility_only microClientConfig
The Microservice configuration object. For forward compatibility only.
Definition nats.h:7249
struct micro_endpoint_s microEndpoint
microEndpoint represents a microservice endpoint.
Definition nats.h:7260
struct micro_service_s microService
the main object for a configured microservice.
Definition nats.h:7333
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_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_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_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 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 const char * natsSubscription_GetSubject(natsSubscription *sub)
Gets the subject name.
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:1416
struct jsConsumerConfig jsConsumerConfig
struct __kvStore kvStore
Definition nats.h:1252
struct jsOptions jsOptions
jsStorageCompression
Definition nats.h:304
jsDeliverPolicy
Definition nats.h:313
struct __stanConnOptions stanConnOptions
Way to configure a stanConnection.
Definition nats.h:1410
jsStorageType
Definition nats.h:294
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:1404
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:273
struct jsPlacement jsPlacement
struct __kvWatcher kvWatcher
Definition nats.h:1267
struct jsStreamStateSubject jsStreamStateSubject
struct __natsStatistics natsStatistics
Statistics of a natsConnection.
Definition nats.h:159
struct jsAccountInfo jsAccountInfo
struct kvConfig kvConfig
struct jsPubOptions jsPubOptions
jsDiscardPolicy
Definition nats.h:284
struct jsDirectGetMsgOptions jsDirectGetMsgOptions
jsReplayPolicy
Definition nats.h:339
struct __natsSubscription natsSubscription
Interest on a given subject.
Definition nats.h:165
kvOperation
Definition nats.h:1273
jsAckPolicy
Definition nats.h:327
struct kvPurgeOptions kvPurgeOptions
struct __stanConnection stanConnection
A connection to a NATS Streaming Server.
Definition nats.h:1392
struct jsAccountLimits jsAccountLimits
struct __jsCtx jsCtx
Definition nats.h:240
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 __kvStatus kvStatus
Definition nats.h:1262
struct __kvEntry kvEntry
Definition nats.h:1257
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:1398
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:305
@ js_StorageCompressionS2
Specifies S2.
Definition nats.h:306
@ js_DeliverByStartSequence
Starts from a given sequence.
Definition nats.h:317
@ js_DeliverByStartTime
Starts from a given UTC time (number of nanoseconds since epoch)
Definition nats.h:318
@ js_DeliverNew
Starts with messages sent after the consumer is created.
Definition nats.h:316
@ js_DeliverLastPerSubject
Starts with the last message for all subjects received.
Definition nats.h:319
@ js_DeliverLast
Starts with the last sequence received.
Definition nats.h:315
@ js_DeliverAll
Starts from the very beginning of a stream. This is the default.
Definition nats.h:314
@ js_FileStorage
Specifies on disk storage. It's the default.
Definition nats.h:295
@ js_MemoryStorage
Specifies in memory only.
Definition nats.h:296
@ js_LimitsPolicy
Specifies that messages are retained until any given limit is reached, which could be one of MaxMsgs,...
Definition nats.h:274
@ js_InterestPolicy
Specifies that when all known observables have acknowledged a message it can be removed.
Definition nats.h:275
@ js_WorkQueuePolicy
Specifies that when the first worker or subscriber acknowledges the message it can be removed.
Definition nats.h:276
@ js_DiscardNew
Will fail to store new messages.
Definition nats.h:286
@ js_DiscardOld
Will remove older messages to return to the limits. This is the default.
Definition nats.h:285
@ js_ReplayInstant
Replays messages as fast as possible.
Definition nats.h:340
@ js_ReplayOriginal
Maintains the same timing as the messages were received.
Definition nats.h:341
@ kvOp_Unknown
Definition nats.h:1274
@ kvOp_Delete
Definition nats.h:1276
@ kvOp_Put
Definition nats.h:1275
@ kvOp_Purge
Definition nats.h:1277
@ js_AckExplicit
Requires ack or nack for all messages.
Definition nats.h:328
@ js_AckAll
When acking a sequence number, this implicitly acks all sequences below this one as well.
Definition nats.h:330
@ js_AckNone
Requires no acks for delivered messages.
Definition nats.h:329
#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:1041
uint64_t Total
Definition nats.h:1042
uint64_t Errors
Definition nats.h:1043
Definition nats.h:1078
int64_t Consumers
Definition nats.h:1082
int64_t Streams
Definition nats.h:1081
int TiersLen
Definition nats.h:1087
uint64_t Memory
Definition nats.h:1079
jsAPIStats API
Definition nats.h:1084
jsAccountLimits Limits
Definition nats.h:1085
jsTier ** Tiers
Definition nats.h:1086
char * Domain
Definition nats.h:1083
uint64_t Store
Definition nats.h:1080
Definition nats.h:1051
int64_t MemoryMaxStreamBytes
Definition nats.h:1057
int64_t MaxStreams
Definition nats.h:1054
int64_t MaxAckPending
Definition nats.h:1056
int64_t MaxConsumers
Definition nats.h:1055
int64_t MaxStore
Definition nats.h:1053
int64_t MaxMemory
Definition nats.h:1052
bool MaxBytesRequired
Definition nats.h:1059
int64_t StoreMaxStreamBytes
Definition nats.h:1058
Definition nats.h:688
int ReplicasLen
Definition nats.h:692
char * Name
Definition nats.h:689
jsPeerInfo ** Replicas
Definition nats.h:691
char * Leader
Definition nats.h:690
Definition nats.h:814
bool MemoryStorage
Definition nats.h:851
const char * Name
Definition nats.h:815
int FilterSubjectsLen
Definition nats.h:857
uint64_t OptStartSeq
Definition nats.h:819
bool HeadersOnly
Definition nats.h:834
uint64_t RateLimit
Definition nats.h:828
jsDeliverPolicy DeliverPolicy
Definition nats.h:818
const char * Description
Definition nats.h:817
const char * Durable
Definition nats.h:816
const char * SampleFrequency
Definition nats.h:829
bool FlowControl
Definition nats.h:832
int64_t MaxRequestBatch
Maximum Pull Consumer request batch size.
Definition nats.h:837
int64_t AckWait
Definition nats.h:822
int64_t MaxRequestMaxBytes
Maximum Pull Consumer request maximum bytes.
Definition nats.h:839
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:820
int64_t MaxWaiting
Definition nats.h:830
jsAckPolicy AckPolicy
Definition nats.h:821
natsMetadata Metadata
Definition nats.h:860
const char * DeliverSubject
Definition nats.h:842
int64_t * BackOff
Redelivery durations expressed in nanoseconds.
Definition nats.h:824
int64_t MaxRequestExpires
Maximum Pull Consumer request expiration, expressed in number of nanoseconds.
Definition nats.h:838
int64_t Heartbeat
Heartbeat interval expressed in number of nanoseconds.
Definition nats.h:833
int64_t Replicas
Definition nats.h:849
int BackOffLen
Definition nats.h:825
int64_t MaxDeliver
Definition nats.h:823
const char ** FilterSubjects
Definition nats.h:856
jsReplayPolicy ReplayPolicy
Definition nats.h:827
const char * DeliverGroup
Definition nats.h:843
int64_t MaxAckPending
Definition nats.h:831
const char * FilterSubject
Definition nats.h:826
int64_t InactiveThreshold
How long the server keeps an ephemeral after detecting loss of interest, expressed in number of nanos...
Definition nats.h:846
Definition nats.h:993
jsSequenceInfo Delivered
Definition nats.h:998
jsConsumerConfig * Config
Definition nats.h:997
bool PushBound
Definition nats.h:1005
int64_t NumWaiting
Definition nats.h:1002
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:996
jsClusterInfo * Cluster
Definition nats.h:1004
int64_t NumAckPending
Definition nats.h:1000
char * Stream
Definition nats.h:994
int64_t NumRedelivered
Definition nats.h:1001
char * Name
Definition nats.h:995
jsSequenceInfo AckFloor
Definition nats.h:999
uint64_t NumPending
Definition nats.h:1003
Definition nats.h:1017
jsConsumerInfo ** List
Definition nats.h:1018
int Count
Definition nats.h:1019
Definition nats.h:1031
int Count
Definition nats.h:1033
char ** List
Definition nats.h:1032
Definition nats.h:881
uint64_t Stream
This is the stream sequence that the application should resume from.
Definition nats.h:882
uint64_t ConsumerServer
This is the consumer sequence last sent by the server.
Definition nats.h:884
uint64_t ConsumerClient
This is the consumer sequence that was last received by the library.
Definition nats.h:883
Definition nats.h:1151
const char * NextBySubject
Get the next message (based on sequence) for that subject.
Definition nats.h:1153
uint64_t Sequence
Get the message at this sequence.
Definition nats.h:1152
const char * LastBySubject
Get the last message on that subject.
Definition nats.h:1154
Definition nats.h:375
const char * DeliverPrefix
Definition nats.h:377
const char * APIPrefix
Definition nats.h:376
Definition nats.h:1164
int64_t MaxBytes
Maximum bytes for the request (request complete based on whichever Batch or MaxBytes comes first)
Definition nats.h:1167
int Batch
Maximum number of messages to be received (see MaxBytes)
Definition nats.h:1166
int64_t Expires
Expiration of the request, expressed in nanoseconds.
Definition nats.h:1165
bool NoWait
Will not wait if the request cannot be completed.
Definition nats.h:1168
int64_t Heartbeat
Have server sends heartbeats to help detect communication failures.
Definition nats.h:1169
Definition nats.h:590
uint64_t * Msgs
Definition nats.h:591
uint64_t Bytes
Definition nats.h:593
int MsgsLen
Definition nats.h:592
Definition nats.h:1099
uint64_t NumPending
Definition nats.h:1102
jsSequencePair Sequence
Definition nats.h:1100
char * Stream
Definition nats.h:1104
char * Domain
Definition nats.h:1106
char * Consumer
Definition nats.h:1105
uint64_t NumDelivered
Definition nats.h:1101
int64_t Timestamp
Definition nats.h:1103
Definition nats.h:1188
jsPubAckErrHandler ErrHandler
Callback invoked when error encountered publishing a given message.
Definition nats.h:1203
jsPubAckHandler AckHandler
Callback invoked for each asynchronous published message.
Definition nats.h:1196
void * AckHandlerClosure
Closure (or user data) passed to jsPubAckHandler callback.
Definition nats.h:1197
void * ErrHandlerClosure
Closure (or user data) passed to jsPubAckErrHandler callback.
Definition nats.h:1204
int64_t StallWait
Amount of time (in milliseconds) to wait in a PublishAsync call when there is MaxPending inflight mes...
Definition nats.h:1206
int64_t MaxPending
Maximum outstanding asynchronous publishes that can be inflight at one time.
Definition nats.h:1189
bool DeletedDetails
Get the list of deleted message sequences.
Definition nats.h:1240
const char * SubjectsFilter
Get the list of subjects in this stream.
Definition nats.h:1241
uint64_t Sequence
Purge up to but not including sequence.
Definition nats.h:1230
uint64_t Keep
Number of messages to keep.
Definition nats.h:1231
const char * Subject
This is the subject to match against messages for the purge command.
Definition nats.h:1229
Definition nats.h:1217
struct jsOptions::jsOptionsStream::jsOptionsStreamInfo Info
Optional stream information retrieval options.
struct jsOptions::jsOptionsStream::jsOptionsStreamPurge Purge
Optional stream purge options.
Definition nats.h:1179
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:1182
const char * Prefix
JetStream prefix, default is "$JS.API".
Definition nats.h:1180
const char * Domain
Domain changes the domain part of JetSteam API prefix.
Definition nats.h:1181
struct jsOptions::jsOptionsStream Stream
Optional stream options.
Definition nats.h:674
bool Offline
Definition nats.h:677
uint64_t Lag
Definition nats.h:679
int64_t Active
Definition nats.h:678
char * Name
Definition nats.h:675
bool Current
Definition nats.h:676
Definition nats.h:358
int TagsLen
Definition nats.h:361
const char * Cluster
Definition nats.h:359
const char ** Tags
Definition nats.h:360
Definition nats.h:1127
natsMsg * Msg
Definition nats.h:1128
natsStatus Err
Definition nats.h:1129
jsErrCode ErrCode
Definition nats.h:1130
const char * ErrText
Definition nats.h:1131
Definition nats.h:1114
uint64_t Sequence
Definition nats.h:1116
bool Duplicate
Definition nats.h:1118
char * Domain
Definition nats.h:1117
char * Stream
Definition nats.h:1115
Definition nats.h:258
const char * ExpectLastMsgId
Expected last message ID in the stream.
Definition nats.h:262
int64_t MaxWait
Amount of time (in milliseconds) to wait for a publish response, default will the context's Wait valu...
Definition nats.h:259
uint64_t ExpectLastSeq
Expected last message sequence in the stream.
Definition nats.h:263
bool ExpectNoMessage
Expected no message (that is, sequence == 0) for the subject in the stream.
Definition nats.h:265
const char * ExpectStream
Expected stream to respond from the publish call.
Definition nats.h:261
const char * MsgId
Message ID used for de-duplication.
Definition nats.h:260
uint64_t ExpectLastSubjectSeq
Expected last message sequence for the subject in the stream.
Definition nats.h:264
Definition nats.h:411
bool HeadersOnly
Definition nats.h:414
const char * Source
Definition nats.h:412
const char * Destination
Definition nats.h:413
Definition nats.h:979
int64_t Last
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:982
uint64_t Stream
Definition nats.h:981
uint64_t Consumer
Definition nats.h:980
Definition nats.h:969
uint64_t Consumer
Definition nats.h:970
uint64_t Stream
Definition nats.h:971
Definition nats.h:715
const char * Name
Definition nats.h:716
const char * Cluster
Definition nats.h:718
const char * Domain
Definition nats.h:717
Definition nats.h:517
jsDiscardPolicy Discard
Definition nats.h:529
const char ** Subjects
Definition nats.h:520
jsSubjectTransformConfig SubjectTransform
Definition nats.h:582
bool AllowDirect
Definition nats.h:552
int SourcesLen
Definition nats.h:538
bool DiscardNewPerSubject
Definition nats.h:557
jsStorageCompression Compression
Definition nats.h:580
const char * Description
Definition nats.h:519
const char * Template
Definition nats.h:533
bool DenyPurge
Restrict the ability to purge messages.
Definition nats.h:541
jsStorageType Storage
Definition nats.h:530
jsStreamConsumerLimits ConsumerLimits
Definition nats.h:583
jsRetentionPolicy Retention
Definition nats.h:522
int64_t MaxMsgs
Definition nats.h:524
int64_t MaxConsumers
Definition nats.h:523
natsMetadata Metadata
Configuration options introduced in 2.10.
Definition nats.h:579
uint64_t FirstSeq
Definition nats.h:581
const char * Name
Definition nats.h:518
bool NoAck
Definition nats.h:532
jsStreamSource ** Sources
Definition nats.h:537
int32_t MaxMsgSize
Definition nats.h:528
jsRePublish * RePublish
Definition nats.h:549
bool MirrorDirect
Definition nats.h:554
int64_t Duplicates
Definition nats.h:534
int64_t MaxMsgsPerSubject
Definition nats.h:527
int64_t MaxAge
Definition nats.h:526
int SubjectsLen
Definition nats.h:521
bool AllowRollup
Definition nats.h:546
jsStreamSource * Mirror
Definition nats.h:536
jsPlacement * Placement
Definition nats.h:535
int64_t MaxBytes
Definition nats.h:525
int64_t Replicas
Definition nats.h:531
bool Sealed
Seal a stream so no messages can get our or in.
Definition nats.h:539
bool DenyDelete
Restrict the ability to delete messages.
Definition nats.h:540
Definition nats.h:433
int MaxAckPending
Definition nats.h:435
int64_t InactiveThreshold
Definition nats.h:434
Definition nats.h:729
jsStreamSourceInfo ** Sources
Definition nats.h:735
int64_t Created
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:731
jsStreamAlternate ** Alternates
Definition nats.h:737
jsStreamState State
Definition nats.h:732
jsClusterInfo * Cluster
Definition nats.h:733
jsStreamSourceInfo * Mirror
Definition nats.h:734
int AlternatesLen
Definition nats.h:738
jsStreamConfig * Config
Definition nats.h:730
int SourcesLen
Definition nats.h:736
Definition nats.h:750
jsStreamInfo ** List
Definition nats.h:751
int Count
Definition nats.h:752
Definition nats.h:764
char ** List
Definition nats.h:765
int Count
Definition nats.h:766
Definition nats.h:394
jsExternalStream * External
Definition nats.h:399
int64_t OptStartTime
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:397
const char * Name
Definition nats.h:395
const char * Domain
Definition nats.h:403
uint64_t OptStartSeq
Definition nats.h:396
const char * FilterSubject
Definition nats.h:398
Definition nats.h:700
const char * FilterSubject
Definition nats.h:705
int64_t Active
Definition nats.h:704
int SubjectTransformsLen
Definition nats.h:707
char * Name
Definition nats.h:701
jsExternalStream * External
Definition nats.h:702
uint64_t Lag
Definition nats.h:703
jsSubjectTransformConfig * SubjectTransforms
Definition nats.h:706
Definition nats.h:652
jsLostStreamData * Lost
Definition nats.h:664
uint64_t LastSeq
Definition nats.h:657
int64_t Consumers
Definition nats.h:665
int DeletedLen
Definition nats.h:663
uint64_t Msgs
Definition nats.h:653
jsStreamStateSubjects * Subjects
Definition nats.h:660
uint64_t FirstSeq
Definition nats.h:655
int64_t LastTime
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:658
int64_t NumSubjects
Definition nats.h:659
uint64_t * Deleted
Definition nats.h:662
uint64_t NumDeleted
Definition nats.h:661
uint64_t Bytes
Definition nats.h:654
int64_t FirstTime
UTC time expressed as number of nanoseconds since epoch.
Definition nats.h:656
Definition nats.h:603
uint64_t Msgs
Definition nats.h:605
const char * Subject
Definition nats.h:604
Definition nats.h:639
int Count
Definition nats.h:641
jsStreamStateSubject * List
Definition nats.h:640
Definition nats.h:904
bool ManualAck
If true, the user will have to acknowledge the messages.
Definition nats.h:949
const char * Consumer
If specified, the subscription will be bound to an existing consumer from the Stream without attempti...
Definition nats.h:921
const char * Stream
If specified, the consumer will be bound to this stream name.
Definition nats.h:911
bool Ordered
If true, this will be an ordered consumer.
Definition nats.h:961
const char * Queue
Queue name for queue subscriptions.
Definition nats.h:936
jsConsumerConfig Config
Consumer configuration.
Definition nats.h:954
Definition nats.h:423
const char * Destination
Definition nats.h:425
const char * Source
Definition nats.h:424
Definition nats.h:1064
const char * Name
Definition nats.h:1065
int64_t Streams
Definition nats.h:1068
uint64_t Store
Definition nats.h:1067
int64_t Consumers
Definition nats.h:1069
uint64_t Memory
Definition nats.h:1066
jsAccountLimits Limits
Definition nats.h:1070
Definition nats.h:1287
uint8_t History
Definition nats.h:1291
const char * Bucket
Definition nats.h:1288
int64_t MaxBytes
Definition nats.h:1293
int32_t MaxValueSize
Definition nats.h:1290
int Replicas
Definition nats.h:1295
const char * Description
Definition nats.h:1289
jsStreamSource * Mirror
Definition nats.h:1297
int64_t TTL
Definition nats.h:1292
jsStorageType StorageType
Definition nats.h:1294
jsRePublish * RePublish
Definition nats.h:1296
int SourcesLen
Definition nats.h:1299
jsStreamSource ** Sources
Definition nats.h:1298
A list of KeyValue store entries.
Definition nats.h:1357
kvEntry ** Entries
Definition nats.h:1358
int Count
Definition nats.h:1359
A list of KeyValue store keys.
Definition nats.h:1381
int Count
Definition nats.h:1383
char ** Keys
Definition nats.h:1382
Definition nats.h:1323
int64_t Timeout
Definition nats.h:1325
int64_t DeleteMarkersOlderThan
Definition nats.h:1335
Definition nats.h:1309
bool IgnoreDeletes
Definition nats.h:1310
bool IncludeHistory
Definition nats.h:1311
int64_t Timeout
How long to wait (in milliseconds) for some operations to complete.
Definition nats.h:1313
bool MetaOnly
Definition nats.h:1312
Definition nats.h:7437
const char * Name
The name of the endpoint.
Definition nats.h:7443
microRequestHandler Handler
The request handler for the endpoint.
Definition nats.h:7465
const char * Subject
The NATS subject the endpoint will listen on.
Definition nats.h:7454
natsMetadata Metadata
Definition nats.h:7460
void * State
A user-provided pointer to store with the endpoint (state/closure).
Definition nats.h:7471
Definition nats.h:7478
const char * Subject
The semantic version of the service.
Definition nats.h:7487
const char * Name
The name of the service.
Definition nats.h:7482
natsMetadata Metadata
Definition nats.h:7493
Definition nats.h:7500
const char * Subject
Definition nats.h:7502
int64_t NumRequests
The number of requests received by the endpoint.
Definition nats.h:7507
char LastErrorString[2048]
a copy of the last error message.
Definition nats.h:7533
int64_t ProcessingTimeSeconds
total request processing time (the seconds part).
Definition nats.h:7518
int64_t ProcessingTimeNanoseconds
total request processing time (the nanoseconds part).
Definition nats.h:7523
int64_t NumErrors
The number of errors, service-level and internal, associated with the endpoint.
Definition nats.h:7513
int64_t AverageProcessingTimeNanoseconds
average request processing time, in ns.
Definition nats.h:7528
const char * Name
Definition nats.h:7501
The Microservice top-level configuration object.
Definition nats.h:7543
const char * Description
The description of the service.
Definition nats.h:7559
void * State
A user-provided pointer to state data.
Definition nats.h:7610
const char * Version
The (semantic) version of the service.
Definition nats.h:7554
microErrorHandler ErrHandler
An error notification handler.
Definition nats.h:7591
natsMetadata Metadata
Metadata for the service, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition nats.h:7564
microRequestHandler StatsHandler
A custom stats handler.
Definition nats.h:7582
microDoneHandler DoneHandler
A callback handler for handling the final cleanup Done event, right before the service is destroyed.
Definition nats.h:7601
const char * Name
The name of the service.
Definition nats.h:7549
microEndpointConfig * Endpoint
The "main" (aka default) endpoint configuration.
Definition nats.h:7573
Definition nats.h:7619
natsMetadata Metadata
Metadata for the service, a JSON-encoded user-provided object, e.g. {"key":"value"}
Definition nats.h:7648
const char * Name
The name of the service.
Definition nats.h:7628
const char * Version
The semantic version of the service.
Definition nats.h:7633
const char * Type
Response type. Always "io.nats.micro.v1.info_response".
Definition nats.h:7623
const char * Id
The ID of the service instance responding to the request.
Definition nats.h:7643
microEndpointInfo * Endpoints
Endpoints.
Definition nats.h:7653
const char * Description
The description of the service.
Definition nats.h:7638
int EndpointsLen
The number of endpoints in the Endpoints array.
Definition nats.h:7658
Definition nats.h:7665
int64_t Started
The timestamp of when the service was started.
Definition nats.h:7689
int EndpointsLen
The number of endpoints in the endpoints array.
Definition nats.h:7699
microEndpointStats * Endpoints
The stats for each endpoint of the service.
Definition nats.h:7694
const char * Version
The semantic version of the service.
Definition nats.h:7679
const char * Name
The name of the service.
Definition nats.h:7674
const char * Type
Response type. Always "io.nats.micro.v1.stats_response".
Definition nats.h:7669
const char * Id
The ID of the service instance responding to the request.
Definition nats.h:7684
A type to represent user-provided metadata, a list of k=v pairs.
Definition nats.h:225
int Count
Definition nats.h:229
const char ** List
Definition nats.h:227
A list of NATS messages.
Definition nats.h:213
int Count
Definition nats.h:215
natsMsg ** Msgs
Definition nats.h:214