From 7a77e0a80e633bdb5cb3f2b633eebdbf70f6a430 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 27 十二月 2022 10:16:51 +0800 Subject: [PATCH] restruct --- 3rdparty/yyjson/yyjson.c | 0 main.cpp | 2 3rdparty/bus_nng/interface_bus_api.h | 0 3rdparty/bus_nng/x86_64/libbus_nng.so | 0 message.h | 14 +++++++ 3rdparty/yyjson/yyjson.h | 0 CMakeLists.txt | 6 +- cbhomeclient.cpp | 31 ++++++++++++++- cbhomeclient.h | 5 ++ message.cpp | 9 ++++ 3rdparty/bus_nng/bn_api.h | 0 exported_symbols | 3 + 3rdparty/bus_nng/aarch64/libbus_nng.so | 0 13 files changed, 63 insertions(+), 7 deletions(-) diff --git a/3dparty/bus_nng/aarch64/libbus_nng.so b/3rdparty/bus_nng/aarch64/libbus_nng.so similarity index 100% rename from 3dparty/bus_nng/aarch64/libbus_nng.so rename to 3rdparty/bus_nng/aarch64/libbus_nng.so Binary files differ diff --git a/3dparty/bus_nng/bn_api.h b/3rdparty/bus_nng/bn_api.h similarity index 100% rename from 3dparty/bus_nng/bn_api.h rename to 3rdparty/bus_nng/bn_api.h diff --git a/3dparty/bus_nng/interface_bus_api.h b/3rdparty/bus_nng/interface_bus_api.h similarity index 100% rename from 3dparty/bus_nng/interface_bus_api.h rename to 3rdparty/bus_nng/interface_bus_api.h diff --git a/3dparty/bus_nng/x86_64/libbus_nng.so b/3rdparty/bus_nng/x86_64/libbus_nng.so similarity index 100% rename from 3dparty/bus_nng/x86_64/libbus_nng.so rename to 3rdparty/bus_nng/x86_64/libbus_nng.so Binary files differ diff --git a/3dparty/yyjson/yyjson.c b/3rdparty/yyjson/yyjson.c similarity index 100% rename from 3dparty/yyjson/yyjson.c rename to 3rdparty/yyjson/yyjson.c diff --git a/3dparty/yyjson/yyjson.h b/3rdparty/yyjson/yyjson.h similarity index 100% rename from 3dparty/yyjson/yyjson.h rename to 3rdparty/yyjson/yyjson.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 29d8e34..344aedd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ ##########################################################] include_directories( - ${CMAKE_SOURCE_DIR}/3dparty/bus_nng + ${CMAKE_SOURCE_DIR}/3rdparty/bus_nng ${CMAKE_SOURCE_DIR}/proto/${ARCH} ${PROTO_LIB_PATH}/include ) @@ -33,7 +33,7 @@ set(src ${CMAKE_SOURCE_DIR}/cbhomeclient.cpp ${CMAKE_SOURCE_DIR}/message.cpp - ${CMAKE_SOURCE_DIR}/3dparty/yyjson/yyjson.c + ${CMAKE_SOURCE_DIR}/3rdparty/yyjson/yyjson.c ) add_library(objs OBJECT ${src}) @@ -50,5 +50,5 @@ # test add_executable(test main.cpp $<TARGET_OBJECTS:objs>) target_link_libraries(test ${Target} - ${CMAKE_SOURCE_DIR}/3dparty/bus_nng/x86_64/libbus_nng.so + ${CMAKE_SOURCE_DIR}/3rdparty/bus_nng/x86_64/libbus_nng.so bhome_msg pthread rt) diff --git a/cbhomeclient.cpp b/cbhomeclient.cpp index 1dac84e..c101e66 100644 --- a/cbhomeclient.cpp +++ b/cbhomeclient.cpp @@ -9,7 +9,7 @@ #include "cbhomeclient.h" #include "fixed_q.h" -#include "3dparty/bus_nng/interface_bus_api.h" +#include "3rdparty/bus_nng/interface_bus_api.h" #include "bhome_msg.pb.h" @@ -74,7 +74,7 @@ } template <class T> Msg msg(T&& t){ Msg m; - msg_helper(make_index_sequence<tuple_size<T>::value>{}, std::forward<T>(t), m); + msg_helper(make_index_sequence<tuple_size<typename decay<T>::type>::value>{}, std::forward<T>(t), m); return m; } @@ -325,6 +325,33 @@ return bus_send_reply(cli->bus, src, pbstr.data(), pbstr.size()); } +struct cqueryprocs* bus_client_query_procs(void* handle, size_t* count){ + BHAddress addr; + const auto& pbaddr = addr.SerializeAsString(); + MsgQueryProc topic; + const auto& pbtopic = topic.SerializeAsString(); + + void* rep = NULL; + int repl = 0; + auto msg = to_bus<4,5>(ptr(handle), bus_query_procs, pbaddr.data(), pbaddr.size(), + pbtopic.data(), pbtopic.size(), &rep, &repl, sndto); + + MsgQueryProcReply msgR; + msgR.ParseFromArray(rep, repl); + bus_free(rep, repl); + + *count = msgR.proc_list_size(); + auto procs = (struct cqueryprocs*)calloc(*count, sizeof(struct cqueryprocs)); + for(size_t i = 0; i < *count; i++){ + const auto& p = msgR.proc_list(i); + size_t idl = p.proc().proc_id().size(); + char* id = (char*)calloc(idl+1, 1); + memcpy(id, p.proc().proc_id().data(), idl); + procs[i] = cqueryprocs{ .id = id, .idl = idl, .online = p.online() }; + } + return procs; +} + //////////////////////////////////////////////////// int bus_client_publish(void* handle, const char* topic, const size_t topicl, const char* data, const size_t size){ MsgPublish pbmsg; diff --git a/cbhomeclient.h b/cbhomeclient.h index 94ac29f..9d24e6c 100644 --- a/cbhomeclient.h +++ b/cbhomeclient.h @@ -61,6 +61,11 @@ */ int bus_client_request(void* handle, struct creqmsg* msg, struct crepmsg** repmsg); +/* + queryprocs 鑾峰彇bhnng_center 娉ㄥ唽鐨勬墍鏈夎繘绋� +*/ +struct cqueryprocs* bus_client_query_procs(void* handle, size_t* count); + #ifdef __cplusplus } #endif diff --git a/exported_symbols b/exported_symbols index 653901c..be3995b 100644 --- a/exported_symbols +++ b/exported_symbols @@ -45,6 +45,9 @@ make_reply_msg; free_reply_msg; + free_query_procs; + bus_client_query_procs; + local: *; }; diff --git a/main.cpp b/main.cpp index 8811cf0..9f400b8 100644 --- a/main.cpp +++ b/main.cpp @@ -9,7 +9,7 @@ #include "cbhomeclient.h" #include "message.h" -// #include "3dparty/bus_nng/bn_api.h" +// #include "3rdparty/bus_nng/bn_api.h" #include "bhome_msg_api.pb.h" using namespace bhome_msg; diff --git a/message.cpp b/message.cpp index 5c15f6c..f7f42f3 100644 --- a/message.cpp +++ b/message.cpp @@ -13,7 +13,7 @@ #include "google/protobuf/dynamic_message.h" #include "google/protobuf/compiler/importer.h" -#include "3dparty/yyjson/yyjson.h" +#include "3rdparty/yyjson/yyjson.h" #include "bhome_msg_api.pb.h" using namespace bhome_msg; @@ -635,3 +635,10 @@ yyjson_mut_doc_free(doc); return cstr_ref(json, jsonl); } + +void free_query_procs(struct cqueryprocs* procs, const size_t count){ + for(size_t i = 0; i < count; i++){ + free(procs[i].id); + } + free(procs); +} diff --git a/message.h b/message.h index 258c135..88ac25f 100644 --- a/message.h +++ b/message.h @@ -147,6 +147,15 @@ size_t datal; }; +/* + 瀵瑰簲 bhome_msg.MsgQueryProcReply_Info query procs 杩斿洖鍊� +*/ +struct cqueryprocs{ + char* id; + size_t idl; + int online; +}; + #ifdef __cplusplus extern "C"{ #endif @@ -277,6 +286,11 @@ const char* data, const size_t datal); void free_reply_msg(struct crepmsg* msg); +/* + 閲婃斁 query procs 浠巆enter鑾峰彇鎵�鏈夌殑procs淇℃伅 +*/ +void free_query_procs(struct cqueryprocs* procs, const size_t count); + #ifdef __cplusplus } #endif -- Gitblit v1.8.0