BrainBlast/_software_lib/nanomq-0.22.10/include/nng/exchange/exchange.h

35 lines
1.2 KiB
C

#ifndef EXCHANGE_H
#define EXCHANGE_H
#include <stddef.h>
#include "core/nng_impl.h"
#include "nng/supplemental/nanolib/conf.h"
// Exchange MQ
#define EXCHANGE_NAME_LEN 32
#define TOPIC_NAME_LEN 128
#define RINGBUFFER_MAX 64
typedef struct exchange_s exchange_t;
struct exchange_s {
char name[EXCHANGE_NAME_LEN];
char topic[TOPIC_NAME_LEN];
ringBuffer_t *rbs[RINGBUFFER_MAX];
unsigned int rb_count;
};
NNG_DECL int exchange_client_get_msg_by_key(void *arg, uint64_t key, nni_msg **msg);
NNG_DECL int exchange_client_get_msgs_by_key(void *arg, uint64_t key, uint32_t count, nng_msg ***list);
NNG_DECL int exchange_client_get_msgs_fuzz(void *arg, uint64_t start, uint64_t end, uint32_t *count, nng_msg ***list);
NNG_DECL int exchange_init(exchange_t **ex, char *name, char *topic,
unsigned int *rbsCaps, char **rbsName, uint8_t *rbsFullOp, unsigned int rbsCount);
NNG_DECL int exchange_add_rb(exchange_t *ex, ringBuffer_t *rb);
NNG_DECL int exchange_release(exchange_t *ex);
NNG_DECL int exchange_handle_msg(exchange_t *ex, uint64_t key, void *msg, nng_aio *aio);
NNG_DECL int exchange_get_ringBuffer(exchange_t *ex, char *rbName, ringBuffer_t **rb);
#endif