#ifndef _c_bus_client_h_
|
#define _c_bus_client_h_
|
|
#include <stddef.h>
|
#include <stdint.h>
|
|
#include "message.h"
|
|
#ifdef __cplusplus
|
extern "C"{
|
#endif
|
|
/*
|
配合 message.h[cpp] 使用
|
*/
|
/*
|
初始化 bus client,srvid 表明当前机器的 srvid 用于远程通信,目前没用
|
rinfo 是注册进程的消息,单进程多次调用,需要使用不同的rinfo
|
*/
|
void* bus_client_init(const char* srvid, const size_t sidsize, const creg* rinfo);
|
/*
|
释放 bus client
|
*/
|
void bus_client_free(void* handle);
|
|
/*
|
获取订阅的消息,订阅消息通过线程不停读取,此处从缓存中读取
|
可通过 message.h 对应的 get_submsg_db get_submsg_proclist 获取对应的消息
|
*/
|
struct csubmsg* bus_client_get_submsg(void* handle);
|
/*
|
发布消息,data 是 MsgPublish protobuffer序列化后的数据
|
*/
|
int bus_client_pubmsg(void* handle, const char* data, const size_t size);
|
/*
|
发布消息,topic 是发布主题, data 是发布的消息体
|
*/
|
int bus_client_publish(void* handle, const char* topic, const size_t topicl, const char* data, const size_t size);
|
|
/*
|
获取 request 消息,通过线程读取,此处从缓存中读取
|
可通过 message.h 的 get_reqmsg_stackerr get_reqmsg_stack 获取对应的消息
|
src 是哪一个进程请求的标识符
|
可以响应多个request发送的消息,同时需要满足异步响应,使用 src 进行区分
|
类似与tcp/ip的socket,标识一个连接
|
*/
|
struct creqmsg* bus_client_get_reqmsg(void* handle, void** src);
|
/*
|
响应消息回复,src是连接标识符,msg是需要回复的消息
|
通过 message.h 的 make_reply_msg 创建
|
*/
|
int bus_client_reply_msg(void* handle, void* src, const struct crepmsg* msg);
|
/*
|
同步的request请求,发送 creqmsg 获取 crepmsg 回复
|
通过 message.h 的 make_req_msg 创建 request 消息
|
获取的 crepmsg 回复消息,需要使用 free_reply_msg 释放
|
*/
|
int bus_client_request(void* handle, struct creqmsg* msg, struct crepmsg** repmsg);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
#endif
|