| | |
| | | |
| | | bool bus_dbapi_get(void *handle, const char *topic, google::protobuf::Message &message); |
| | | bool bus_dbapi_get_topic_data(void *handle, const char *topic, crepmsg **pptr_repmsg, size_t len); |
| | | bool bus_dbapi_get_topic_data(void *handle, const char *topic, crepmsg **pptr_repmsg, size_t len, std::map<string, string> ¶ms); |
| | | extern "C" int bus_dbapi_get_json_data_by_key(const char *json, const char *flag_key, const char *data_key, char **pptr_data, yyjson_type *ptr_type); |
| | | extern "C" int bus_dbapi_get_json_data(const char *json, char **pptr_data, uint8_t *ptr_type); |
| | | bool bus_dbapi_get_str(void *handle, const char *topic, char **pptr_str); |
| | | int get_value_by_key(char *json, const char *key, char **pptr_data); |
| | | |
| | | template <class T> |
| | | bool bus_dbapi_get_list(char *json, T &list) { |
| | | bool bus_dbapi_get_list(char *json, const char *flag_key, const char *data_key, T &list) { |
| | | char *ptr_value = NULL; |
| | | size_t data_len = 0; |
| | | //get the topic json data |
| | |
| | | char *msgdata = (char *)malloc(msglen); |
| | | memset(msgdata, 0, msglen); |
| | | |
| | | if (0 == bus_dbapi_get_json_data(json, &msgdata, &type)) { |
| | | if (0 == bus_dbapi_get_json_data_by_key(json, flag_key, data_key, &msgdata, &type)) { |
| | | printf("======>> protomsg: %s\n", msgdata); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | template <class T> |
| | | bool bus_dbapi_get_list(char *json, T &list) { |
| | | const char *success_name = "success"; |
| | | const char *data_name = "data"; |
| | | |
| | | return bus_dbapi_get_list(json, success_name, data_name, list); |
| | | } |
| | | |
| | | template <class T> |
| | | bool bus_dbapi_get_list(void *handle, const char *topic, T &list) { |
| | | crepmsg *repmsg = NULL; |
| | | size_t len = 0; |
| | |
| | | free_reply_msg(repmsg); |
| | | return iRet; |
| | | } |
| | | |
| | | template <class T> |
| | | bool bus_dbapi_get_list(void *handle, const char *topic, T &list, std::map<string, string> ¶ms) { |
| | | crepmsg *repmsg = NULL; |
| | | size_t len = 0; |
| | | bool iRet = false; |
| | | iRet = bus_dbapi_get_topic_data(handle, topic, &repmsg, len, params); |
| | | if ((false == iRet) || (NULL == repmsg)) { |
| | | return false; |
| | | } |
| | | |
| | | iRet = bus_dbapi_get_list(repmsg->data, list); |
| | | free_reply_msg(repmsg); |
| | | return iRet; |
| | | } |
| | | |
| | | #endif |