#ifndef _c_bus_client_message_h_
|
#define _c_bus_client_message_h_
|
|
#include <stddef.h>
|
|
struct cstr{
|
char* str;
|
size_t size;
|
};
|
// 进程信息
|
struct cproc{
|
struct cstr name;
|
struct cstr id;
|
struct cstr info;
|
};
|
|
struct cstrarr{
|
struct cstr* arr;
|
size_t size;
|
};
|
// 进程注册信息
|
struct creg{
|
struct cproc* pinfo;
|
|
cstrarr channel;
|
cstrarr topic_pub;
|
cstrarr topic_sub;
|
cstrarr topic_sub_net;
|
};
|
|
// 其他进程信息
|
struct cclient{
|
struct creg* rinfo;
|
|
int replykey;
|
int hbcnt;
|
int dcnt;
|
int status;
|
};
|
|
//TableChanged enum
|
enum TableChanged {
|
T_Camera = 0, //摄像机变化
|
T_CameraRule = 1, //摄像机任务参数变化
|
T_Sdk = 2, //sdk变化
|
T_CameraPolygon = 3, //摄像机多边形变化
|
T_TimeRule = 4, //时间规则变化
|
T_Server = 5, //服务器信息变化
|
T_PollConfig = 6, //轮询配置变化
|
T_File = 7, //本地文件变化
|
T_FileSetting = 8, //本地文件分析设置
|
T_SdkChanSet = 9, //算法通道设置变化
|
T_FileStack = 10, //数据栈变化
|
T_ResourceConfig = 11, //对外服务配置变化
|
T_CalculationPower = 12, //需要重新计算算力占用情况
|
T_EventPush = 13, //事件推送有变化
|
T_Cluster = 14, //集群创建、加入或退出
|
T_CameraPolygonRelation = 15, //摄像机区域的关联关系
|
T_Voice = 16, //报警声音发生变化
|
};
|
enum DbAction {
|
Insert = 0, //Insert
|
Update = 1, //Update
|
Delete = 2, //Delete
|
};
|
|
// 数据库变化信息
|
struct DbChangeMsg{
|
TableChanged table; //变化的表
|
struct cstr id; //变化数据id
|
DbAction action; //action
|
struct cstr info; //变化内容
|
};
|
|
// 订阅消息
|
struct csubmsg{
|
struct cstr topic;
|
|
// private
|
// enum MsgT {NONE=0, DB, PROCLIST} type;
|
struct cstr msg;
|
};
|
|
// 其他注册进程列表,如数据库进程需要启动再运行pollcontrol逻辑
|
struct cproclist{
|
struct cclient* cli;
|
size_t clientsize;
|
};
|
|
//////////////////////////////////////////
|
// request body
|
struct creq{
|
struct cstr path;
|
struct cstr body;
|
};
|
// request msg
|
struct creqmsg{
|
struct cstr procid;
|
struct creq msg;
|
void* src;
|
};
|
// decode stack err msg
|
struct cstackmsgerr{
|
struct cstr stackid;
|
struct cstr fileid;
|
};
|
// stack file
|
struct cstackfile{
|
struct cstr id;
|
struct cstr name;
|
struct cstr path;
|
int type;
|
void* noused;
|
};
|
// decode stack success msg
|
struct cstackmsg{
|
int procnum;
|
struct cstr stackid;
|
struct cstr stackname;
|
int type;
|
int shmkey;
|
int width;
|
int height;
|
int fps;
|
struct cstackfile* files;
|
size_t filescnt;
|
};
|
|
// reply msg
|
struct crepmsg{
|
struct cstr json;
|
|
int success;
|
struct cstr msg;
|
struct cstr data;
|
};
|
|
#ifdef __cplusplus
|
extern "C"{
|
#endif
|
|
struct cstr cstr_new(const char* str, const size_t len);
|
void cstr_free(struct cstr str);
|
struct cstrarr cstr_arr_new(const size_t len);
|
void cstr_arr_add(struct cstrarr* arr, const char* data, const size_t len, const size_t idx);
|
void cstr_arr_free(struct cstrarr arr);
|
|
void free_creg(struct creg* reg);
|
|
struct cproc* clone_proc_info(struct cproc* pi);
|
void free_proc_info(struct cproc* pi);
|
|
// 订阅消息相关,订阅数据库db消息和进程列表proclist消息
|
struct csubmsg* to_submsg(const char* data, const size_t size);
|
void free_submsg(struct csubmsg* msg);
|
// db msg
|
struct DbChangeMsg* get_submsg_db(struct csubmsg* msg);
|
void free_submsg_db(struct DbChangeMsg* msg);
|
// proclist msg
|
struct cproclist* get_submsg_proclist(struct csubmsg* msg);
|
void free_submsg_proclist(struct cproclist* ppl);
|
|
// request msg
|
struct creqmsg* to_reqmsg(const char* pid, const size_t pids,
|
const char* data, const size_t size, void* src);
|
void free_reqmsg(struct creqmsg* msg);
|
// decode err msg
|
struct cstackmsgerr* get_reqmsg_stackerr(struct creqmsg* msg);
|
void free_reqmsg_stackerr(struct cstackmsgerr* msg);
|
// decode success msg
|
struct cstackmsg* get_reqmsg_stack(struct creqmsg* msg);
|
void free_reqmsg_stack(struct cstackmsg* msg);
|
|
// reply msg
|
struct crepmsg* make_reply_msg(const int success, const char* msg, const size_t msgl,
|
const char* data, const size_t datal);
|
void free_reply_msg(struct crepmsg* msg);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
#endif
|