From ba9e213d3f01555d823aaf453798a148dade45a4 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 13 十二月 2022 09:56:18 +0800 Subject: [PATCH] 添加注释 --- main.cpp | 15 +- message.cpp | 73 +++++---- message.h | 192 ++++++++++++++++++++------- exported_symbols | 25 +++ CMakeLists.txt | 2 cbhomeclient.cpp | 15 + cbhomeclient.h | 43 +++++ 7 files changed, 264 insertions(+), 101 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cdbef0..29d8e34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ ) add_library(objs OBJECT ${src}) -# set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exported_symbols") +set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exported_symbols") add_library(${Target} SHARED $<TARGET_OBJECTS:objs>) target_link_libraries(${Target} PRIVATE bhome_msg) diff --git a/cbhomeclient.cpp b/cbhomeclient.cpp index 9c8701e..574dcfd 100644 --- a/cbhomeclient.cpp +++ b/cbhomeclient.cpp @@ -324,12 +324,17 @@ return bus_send_reply(cli->bus, src, pbstr.data(), pbstr.size()); } - - //////////////////////////////////////////////////// +int bus_client_publish(void* handle, const char* topic, const size_t topicl, const char* data, const size_t size){ + MsgPublish pbmsg; + pbmsg.set_topic(topic, topicl); + pbmsg.set_data(data, size); + auto pbstr = pbmsg.SerializeAsString(); + return bus_client_pubmsg(handle, pbstr.data(), pbstr.size()); +} + // test -int bus_client_pubmsg(void* handle, void* data, const size_t size){ +int bus_client_pubmsg(void* handle, const char* data, const size_t size){ client* cli = ptr(handle); - bus_publish(cli->bus, data, size, 100); - return 0; + return bus_publish(cli->bus, data, size, 100); } diff --git a/cbhomeclient.h b/cbhomeclient.h index 3056b04..fba5c9e 100644 --- a/cbhomeclient.h +++ b/cbhomeclient.h @@ -10,17 +10,52 @@ extern "C"{ #endif +/* + 閰嶅悎 message.h[cpp] 浣跨敤 +*/ +/* + 鍒濆鍖� bus client锛宻rvid 琛ㄦ槑褰撳墠鏈哄櫒鐨� 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); +/* + 鍙戝竷娑堟伅锛宒ata 鏄� MsgPublish protobuffer搴忓垪鍖栧悗鐨勬暟鎹� +*/ +int bus_client_pubmsg(void* handle, const char* data, const size_t size); +/* + 鍙戝竷娑堟伅锛宼opic 鏄彂甯冧富棰橈紝 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 杩涜鍖哄垎 + 绫讳技涓巘cp/ip鐨剆ocket锛屾爣璇嗕竴涓繛鎺� +*/ struct creqmsg* bus_client_get_reqmsg(void* handle, void** src); -int bus_client_request(void* handle, struct creqmsg* msg, struct crepmsg** repmsg); +/* + 鍝嶅簲娑堟伅鍥炲锛宻rc鏄繛鎺ユ爣璇嗙锛宮sg鏄渶瑕佸洖澶嶇殑娑堟伅 + 閫氳繃 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); +/* + 鍚屾鐨剅equest璇锋眰锛屽彂閫� 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 } diff --git a/exported_symbols b/exported_symbols index 5df1201..9f57710 100644 --- a/exported_symbols +++ b/exported_symbols @@ -3,11 +3,36 @@ bus_client_init; bus_client_free; bus_client_get_submsg; + bus_client_pubmsg; + bus_client_publish; + bus_client_get_reqmsg; + bus_client_reply_msg; + bus_client_request; + cstr_new; + cstr_free; + cstr_arr_new; + cstr_arr_add; + cstr_arr_free; + make_proc_info; + clone_proc_info; + free_proc_info; + free_creg; + to_submsg; free_submsg; get_submsg_db; free_submsg_db; get_submsg_proclist; free_submsg_proclist; + to_reqmsg; + make_req_msg; + free_reqmsg; + get_reqmsg_stackerr; + free_reqmsg_stackerr; + get_reqmsg_stack; + free_reqmsg_stack; + make_reply_msg_json; + make_reply_msg; + free_reply_msg; local: *; diff --git a/main.cpp b/main.cpp index 1e57df9..6d0e4bd 100644 --- a/main.cpp +++ b/main.cpp @@ -46,13 +46,14 @@ while (true) { for(auto && i : topics){ auto msg = base_msg + "test_ps pub message "+i+"-->msg-"+to_string(count++); - MsgPublish pbmsg; - pbmsg.set_topic(i); - pbmsg.set_data(msg); - auto data = pbmsg.SerializeAsString(); - // TestPub(i.c_str(), i.length(), data.c_str(), data.length()); - int pubres = bus_client_pubmsg(handle, (void*)data.data(), data.size()); - printf("======>> bus_client_pubmsg [%s]\n", msg.c_str()); + // MsgPublish pbmsg; + // pbmsg.set_topic(i); + // pbmsg.set_data(msg); + // auto data = pbmsg.SerializeAsString(); + // int ret = bus_client_pubmsg(handle, data.data(), data.size()); + + int ret = bus_client_publish(handle, i.data(), i.size(), msg.data(), msg.size()); + printf("======>> bus_client_pubmsg [%s] ret %d\n", msg.c_str(), ret); this_thread::sleep_for(chrono::seconds{2}); } } diff --git a/message.cpp b/message.cpp index 394e1d4..9699470 100644 --- a/message.cpp +++ b/message.cpp @@ -22,19 +22,22 @@ template <class T> T* ptrT(const size_t l=1){ return (T*)calloc(l, sizeof(T)); } -static struct cstr cstr_clone(const struct cstr old){ - return cstr_new(old.str, old.size); -} -static struct cstr cstr_ref(char* str, const size_t len){ +static inline struct cstr null_cstr(){ struct cstr cs; memset(&cs, 0, sizeof(cs)); + return cs; +} +static inline struct cstr cstr_ref(char* str, const size_t len){ + struct cstr cs = null_cstr(); cs.size = len; cs.str = str; return cs; } +static inline struct cstr cstr_clone(const struct cstr old){ + return cstr_new(old.str, old.size); +} struct cstr cstr_new(const char* str, const size_t len){ - struct cstr cs; - memset(&cs, 0, sizeof(cs)); + struct cstr cs = null_cstr(); cs.size = len; cs.str = ptrT<char>(len); memcpy(cs.str, str, len); @@ -43,9 +46,13 @@ void cstr_free(struct cstr str){ if (str.str && str.size) free(str.str); } -struct cstrarr cstr_arr_new(const size_t count){ +static inline struct cstrarr null_cstr_arr(){ struct cstrarr arr; memset(&arr, 0, sizeof(arr)); + return arr; +} +struct cstrarr cstr_arr_new(const size_t count){ + struct cstrarr arr = null_cstr_arr(); arr.arr = (struct cstr*)calloc(count, sizeof(struct cstr)); arr.count = count; return arr; @@ -63,21 +70,16 @@ free(arr.arr); } -void free_creg(struct creg* reg){ - if (reg){ - if (reg->pinfo) free_proc_info(reg->pinfo); - cstr_arr_free(reg->channel); - cstr_arr_free(reg->topic_pub); - cstr_arr_free(reg->topic_sub); - cstr_arr_free(reg->topic_sub_net); - free(reg); - } +struct cproc* make_proc_info(const struct cstr name, const struct cstr id, const struct cstr info){ + auto proc = ptrT<struct cproc>(); + proc->name = cstr_clone(name); + proc->id = cstr_clone(id); + // proc->info = cstr_clone(info); + return proc; } - -struct cproc* clone_proc_info(struct cproc* pi){ +struct cproc* clone_proc_info(const struct cproc* pi){ if (!pi) return NULL; auto newpi = ptrT<struct cproc>(); - *newpi = *pi; newpi->name = cstr_clone(newpi->name); newpi->id = cstr_clone(newpi->id); // todo: ignore info @@ -91,6 +93,17 @@ cstr_free(pi->id); cstr_free(pi->info); free(pi); + } +} + +void free_creg(struct creg* reg){ + if (reg){ + if (reg->pinfo) free_proc_info(reg->pinfo); + cstr_arr_free(reg->channel); + cstr_arr_free(reg->topic_pub); + cstr_arr_free(reg->topic_sub); + cstr_arr_free(reg->topic_sub_net); + free(reg); } } @@ -183,9 +196,7 @@ auto assign_arr = [&obj](yyjson_val* v){ const size_t count = yyjson_arr_size(v); - struct cstrarr arr; - memset(&arr, 0, sizeof(arr)); - arr.count = count; + struct cstrarr arr = cstr_arr_new(count); for(size_t i = 0; i < count; i++){ auto sv = yyjson_arr_get(v, i); char* entry = NULL; @@ -355,11 +366,11 @@ const size_t size = msg->msg.size; auto pl = ptrT<struct cproclist>(); - pl->cli = json2cclients(data, size, &pl->clientsize); + pl->cli = json2cclients(data, size, &pl->count); return pl; } void free_submsg_proclist(struct cproclist* pl){ - if (pl) if (pl->cli) free_cclients(pl->cli, pl->clientsize); + if (pl) if (pl->cli) free_cclients(pl->cli, pl->count); } ////////////////////////////////////////////////// @@ -388,12 +399,12 @@ return msg; } -struct creqmsg* make_req_msg(const char* topic, const size_t topics, +struct creqmsg* make_req_msg(const char* topic, const size_t topicl, const char* data, const size_t datal) { auto msg = ptrT<struct creqmsg>(); MsgRequestTopic msgRT; - msgRT.set_topic(topic, topics); + msgRT.set_topic(topic, topicl); msgRT.set_data(data, datal); auto pbstr = msgRT.SerializeAsString(); @@ -411,9 +422,8 @@ } struct cstackmsgerr* get_reqmsg_stackerr(struct creqmsg* msg){ - struct cstr path, body; - memset(&path, 0, sizeof(path)); - memset(&body, 0, sizeof(body)); + struct cstr path = null_cstr(); + struct cstr body = null_cstr(); tie(path, body) = json2reqmsg(msg->msg); if (body.size == 0) return NULL; @@ -443,9 +453,8 @@ } // decode success msg struct cstackmsg* get_reqmsg_stack(struct creqmsg* msg){ - struct cstr path, body; - memset(&path, 0, sizeof(path)); - memset(&body, 0, sizeof(body)); + struct cstr path = null_cstr(); + struct cstr body = null_cstr(); tie(path, body) = json2reqmsg(msg->msg); if (body.size == 0) return NULL; diff --git a/message.h b/message.h index 6024a7b..e22be44 100644 --- a/message.h +++ b/message.h @@ -4,38 +4,38 @@ #include <stddef.h> struct cstr{ - char* str; - size_t size; + char* str; // 瀛楃涓插唴瀹� + size_t size; // 瀛楃涓查暱搴� }; // 杩涚▼淇℃伅 struct cproc{ - struct cstr name; - struct cstr id; - struct cstr info; + struct cstr name; // 杩涚▼鍚嶅瓧 + struct cstr id; // 杩涚▼id + struct cstr info; // 杩涚▼鍏朵粬淇℃伅锛岀洰鍓嶆病鐢� }; struct cstrarr{ - struct cstr* arr; - size_t count; + struct cstr* arr; // 瀛楃涓叉暟缁� + size_t count; // 瀛楃涓叉暟缁勯暱搴� }; // 杩涚▼娉ㄥ唽淇℃伅 struct creg{ - struct cproc* pinfo; + struct cproc* pinfo; // 闇�瑕佹敞鍐岀殑杩涚▼淇℃伅 - cstrarr channel; - cstrarr topic_pub; - cstrarr topic_sub; - cstrarr topic_sub_net; + cstrarr channel; // 杩涚▼鎻愪緵鐨勮姹傚搷搴旀湇鍔$殑涓婚 + cstrarr topic_pub; // 杩涚▼鎻愪緵鐨勫彂甯冭闃呯殑鍙戝竷涓婚 + cstrarr topic_sub; // 杩涚▼闇�瑕佽闃呯殑涓婚 + cstrarr topic_sub_net; // 杩涚▼闇�瑕佽闃呯殑缃戠粶涓婚锛岀洰鍓嶆病鐢� }; // 鍏朵粬杩涚▼淇℃伅 struct cclient{ - struct creg* rinfo; + struct creg* rinfo; // 浠h〃鍏朵粬杩涚▼鐨勮繘绋嬩俊鎭� - int replykey; - int hbcnt; - int dcnt; - int status; + int replykey; // 娌$敤锛屼笂涓�涓増鏈敤鍏变韩鍐呭瓨锛屾涓簁ey + int hbcnt; // 蹇冭烦娆℃暟锛熷彲鑳芥病鐢� + int dcnt; // deadcount锛屽彲鑳芥病鐢紵 + int status; // 杩涚▼鐘舵�侊紝鍙兘娌$敤锛� }; //TableChanged enum @@ -59,118 +59,206 @@ T_Voice = 16, //鎶ヨ澹伴煶鍙戠敓鍙樺寲 }; enum DbAction { - Insert = 0, //Insert - Update = 1, //Update - Delete = 2, //Delete + Insert = 0, //Insert db + Update = 1, //Update db + Delete = 2, //Delete db }; // 鏁版嵁搴撳彉鍖栦俊鎭� struct DbChangeMsg{ TableChanged table; //鍙樺寲鐨勮〃 struct cstr id; //鍙樺寲鏁版嵁id - DbAction action; //action + DbAction action; //action/ DbAction[Insert/Update/Delete] struct cstr info; //鍙樺寲鍐呭 }; // 璁㈤槄娑堟伅 struct csubmsg{ - struct cstr topic; + struct cstr topic; // 鏀跺埌鐨勮闃呮秷鎭殑涓婚锛屽尯鍒嗛偅绉嶈闃呮秷鎭� // private // enum MsgT {NONE=0, DB, PROCLIST} type; - struct cstr msg; + struct cstr msg; // 鏀跺埌鐨勮闃呮秷鎭殑body }; // 鍏朵粬娉ㄥ唽杩涚▼鍒楄〃锛屽鏁版嵁搴撹繘绋嬮渶瑕佸惎鍔ㄥ啀杩愯pollcontrol閫昏緫 struct cproclist{ - struct cclient* cli; - size_t clientsize; + struct cclient* cli; // 鍏朵粬杩涚▼鐨勫垪琛� + size_t count; // 鍏朵粬杩涚▼鐨勫垪琛ㄧ殑count }; ////////////////////////////////////////// // request msg +/* + 姝ゆ秷鎭棦浣滀负鎺ユ敹鐨剅equest msg鐨勭粨鏋勶紝涔熶綔涓哄彂閫乺equest 娑堟伅鐨勭粨鏋� + 鎺ユ敹request娑堟伅浼氬甫鏈夊彂鍑簉equest娑堟伅鐨勮繘绋嬬殑id锛宲rocid +*/ struct creqmsg{ - struct cstr procid; - struct cstr msg; + struct cstr procid; // 鍙戦�乺equest娑堟伅鐨勮繘绋媔d + struct cstr msg; // request娑堟伅浣� }; // decode stack err msg +/* + pollcontrol浼氭帴鏀舵暟鎹爤瑙g爜鍙戦�佺殑瑙g爜澶辫触娑堟伅锛岀敤浜庣疆缃戦〉鐘舵�� +*/ struct cstackmsgerr{ - struct cstr stackid; - struct cstr fileid; + struct cstr stackid; // 瑙g爜澶辫触鐨勬暟鎹爤id + struct cstr fileid; // 瑙g爜澶辫触鐨勬枃浠秈d }; // stack file +/* + 鏁版嵁鏍堢殑鏂囦欢鍒楄〃锛屽搴� protomsg.FileAnalysis 浣嗘槸姝ょ粨鏋勪綋闈炲父闀� + 鐪嬩唬鐮佸簲璇ュ彧闇�瑕佽В鏋愬嚭鐨勫嚑涓� +*/ struct cstackfile{ - struct cstr id; - struct cstr name; - struct cstr path; - int type; - void* noused; + struct cstr id; // 鏂囦欢id + struct cstr name; // 鏂囦欢name + struct cstr path; // 鏂囦欢璺緞 + int type; // 鏂囦欢绫诲瀷 1锛歷ideo锛�2锛歱icture + void* noused; // 鏈娇鐢� }; // decode stack success msg +/* + pollcontrol浼氭帴鏀舵暟鎹爤瑙g爜瀹屾垚鐨勬秷鎭紝鐒跺悗涓嬪彂鏂扮殑鏁版嵁鏍堜换鍔� +*/ struct cstackmsg{ - int procnum; - struct cstr stackid; - struct cstr stackname; - int type; - int shmkey; - int width; + int procnum; // decoder 鍚姩鐨勮繘绋嬪彿锛屾暟鎹爤鍙兘浼氭湁鏁颁釜decoder鍚屾椂杩愯 + struct cstr stackid; // 鏁版嵁鏍� id + struct cstr stackname; // 鏁版嵁鏍� name + int type; // 鏁版嵁鏍堢被鍨� video picture + int shmkey; // 鏁版嵁鏍堜娇鐢ㄧ殑鍏变韩鍐呭瓨key + int width; // 鍒嗚鲸鐜� int height; - int fps; - struct cstackfile* files; + int fps; // fps 閲囨牱 fps/s + struct cstackfile* files; // 鏁版嵁鏍堟枃浠跺垪琛� size_t filescnt; }; // reply msg +// 瀵瑰簲 bhome_msg.MsgRequestTopicReply struct crepmsg{ - int errcode; - struct cstr errmsg; - struct cstr data; + int errcode; // 鐩稿簲request璇锋眰鐨勬秷鎭紝閿欒鐮� + struct cstr errmsg; // 閿欒娑堟伅 + struct cstr data; // 娑堟伅浣� }; #ifdef __cplusplus extern "C"{ #endif - +/* + 灏佽浜咰鎺ュ彛鐨剆tring + cstr_new 鍒涘缓涓�涓猻tring锛屽寘鎷唴瀛樺湴鍧�鍜岄暱搴︼紝浼氭嫹璐濆弬鏁� + 蹇呴』浣跨敤cstr_free閲婃斁 +*/ struct cstr cstr_new(const char* str, const size_t len); void cstr_free(struct cstr str); +/* + 灏佽瀛楃涓叉暟缁勶紝鍏朵腑鏄竴涓猻truct cstr鏁扮粍锛屽寘鎷寚鍚戞暟缁勭殑鎸囬拡鍜宑ount + 閫氳繃cstr_arr_add娣诲姞瀛楃涓诧紝鍐呴儴浼氭嫹璐濆瓧绗︿覆 + 蹇呴』浣跨敤cstr_arr_free閲婃斁 +*/ struct cstrarr cstr_arr_new(const size_t count); 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); +/* + 鍒涘缓struct cproc 缁撴瀯锛屽搴攑rocinfo锛屼繚瀛榩roc鐨刵ame锛宨d锛宨nfo[褰撳墠娌℃湁浣跨敤] + 蹇呴』浣跨敤free_proc_info閲婃斁 +*/ +struct cproc* make_proc_info(const struct cstr name, const struct cstr id, const struct cstr info); +/* + 浠庡凡瀛樺湪鐨刾roc鍏嬮殕锛屼細鎷疯礉锛屼娇鐢╢ree_proc_info閲婃斁 +*/ +struct cproc* clone_proc_info(const struct cproc* pi); void free_proc_info(struct cproc* pi); +/* + 閲婃斁creg缁撴瀯鎸囬拡 + creg缁撴瀯鍙互浣跨敤涓婅堪make_proc_info銆乧str_arr_new銆乧str_new鍑芥暟鍒涘缓 +*/ +void free_creg(struct creg* reg); // 璁㈤槄娑堟伅鐩稿叧锛岃闃呮暟鎹簱db娑堟伅鍜岃繘绋嬪垪琛╬roclist娑堟伅 +/* + cbhomeclient.cpp涓娇鐢紝灏嗘帴鏀跺埌鐨剆ubmsg瑙e寘鎴恈submsg + 鍖呮嫭topic鍜宮sg鏁版嵁锛宮sg鏁版嵁骞舵湭鍙嶅簭鍒楀寲 + 蹇呴』浣跨敤free_submsg閲婃斁 +*/ struct csubmsg* to_submsg(const char* data, const size_t size); void free_submsg(struct csubmsg* msg); // db msg +/* + 鎺ユ敹鍒扮殑submsg鍦╬ollcontrol涓彲鑳戒负鏁版嵁搴撴洿鏂扮殑閫氱煡 + 灏哻submsg涓湭鍙嶅簭鍒楀寲鐨勬暟鎹В鍖呮垚db鐨勬暟鎹牸寮� + 蹇呴』鐢╢ree_submsg_db閲婃斁 +*/ struct DbChangeMsg* get_submsg_db(struct csubmsg* msg); void free_submsg_db(struct DbChangeMsg* msg); // proclist msg +/* + 鎺ユ敹鍒扮殑submsg鍦╬ollcontrol涓彲鑳戒负鍏冲績鐨勫叾浠栬繘绋嬬殑鍒楄〃 + 灏哻submsg涓湭鍙嶅簭鍒楀寲鐨勬暟鎹В鍖呮垚杩涚▼鐨勫垪琛� + 蹇呴』鐢╢ree_submsg_proclist閲婃斁 +*/ struct cproclist* get_submsg_proclist(struct csubmsg* msg); void free_submsg_proclist(struct cproclist* ppl); // request msg +/* + cbhomeclient.cpp涓娇鐢紝灏嗘帴鏀跺埌鐨剅equest璇锋眰鏁版嵁瑙e寘鎴恈reqmsg + 鍖呮嫭request杩涚▼鐨刾rocid鍜宮sg鏁版嵁锛宮sg鏁版嵁骞舵湭鍙嶅簭鍒楀寲 + 蹇呴』浣跨敤free_reqmsg閲婃斁 +*/ struct creqmsg* to_reqmsg(const char* pid,const size_t pids,const char* data,const size_t size); -struct creqmsg* make_req_msg(const char* topic, const size_t topics, +void free_reqmsg(struct creqmsg* msg); +/* + 鏈繘绋嬪悜鍏朵粬杩涚▼璇锋眰鏁版嵁鏋勫缓 + 鍖呮嫭璇锋眰鐨勪富棰榯opic鍜岃姹傜殑鏁版嵁body[data] + 蹇呴』浣跨敤free_reqmsg閲婃斁 +*/ +struct creqmsg* make_req_msg(const char* topic, const size_t topicl, const char* data, const size_t datal); -void free_reqmsg(struct creqmsg* msg); // decode err msg +/* + 鎺ユ敹鍒扮殑creqmsg鍦╬ollcontrol涓彲鑳戒负鏁版嵁鏍堣В鐮侀敊璇俊鎭� + 灏哻reqmsg涓湭鍙嶅簭鍒楀寲鐨勬暟鎹В鍖呮垚cstackmsgerr锛屽寘鎷暟鎹爤id stackid鍜屾枃浠秈d fileid + 蹇呴』鐢╢ree_reqmsg_stackerr閲婃斁 +*/ struct cstackmsgerr* get_reqmsg_stackerr(struct creqmsg* msg); void free_reqmsg_stackerr(struct cstackmsgerr* msg); // decode success msg +/* + 鎺ユ敹鍒扮殑creqmsg鍦╬ollcontrol涓彲鑳戒负鏁版嵁鏍堣В鐮佸畬鎴愪俊鎭� + 灏哻reqmsg涓湭鍙嶅簭鍒楀寲鐨勬暟鎹В鍖呮垚cstackmsg + 鍖呮嫭 + int procnum; // 鍚姩鐨刣ecoder杩涚▼num + struct cstr stackid; + struct cstr stackname; + int type; // video picture + int shmkey; + int width; + int height; + int fps; + struct cstackfile* files; // 鏂囦欢鍒楄〃 + size_t filescnt; // 鏂囦欢鏁伴噺 + 蹇呴』鐢╢ree_reqmsg_stackerr閲婃斁 +*/ struct cstackmsg* get_reqmsg_stack(struct creqmsg* msg); void free_reqmsg_stack(struct cstackmsg* msg); // reply msg +/* + no use 灏唕eply娑堟伅搴忓垪鍖栦负json锛岀洰鍓嶆病鏈変娇鐢� + 浣跨敤 cstr_free 閲婃斁 +*/ struct cstr make_reply_msg_json(const int success, const char* msg, const size_t msgl, const char* data, const size_t datal); +/* + 鍒涘缓 creqmsg 鍖呮嫭errcode銆乪rrmsg鍜屾秷鎭綋data + 浣跨敤 free_reply_msg 閲婃斁 +*/ struct crepmsg* make_reply_msg(const int errcode, const char* errmsg, const size_t emsgl, const char* data, const size_t datal); - void free_reply_msg(struct crepmsg* msg); #ifdef __cplusplus -- Gitblit v1.8.0