zhangmeng
2022-12-13 ba9e213d3f01555d823aaf453798a148dade45a4
cbhomeclient.h
@@ -10,17 +10,52 @@
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);
int bus_client_request(void* handle, struct creqmsg* msg, struct crepmsg** repmsg);
/*
    响应消息回复,src是连接标识符,msg是需要回复的消息
    通过 message.h 的 make_reply_msg 创建
*/
int bus_client_reply_msg(void* handle, void* src, const struct crepmsg* msg);
// test
int bus_client_pubmsg(void* handle, void* data, const size_t size);
/*
    同步的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
}