zhangzengfei
2023-01-16 71156fd4aaa5f18ba9f95f9f08bc930a321e257c
util.h
@@ -32,12 +32,14 @@
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> &params);
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
@@ -51,7 +53,7 @@
    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);
    }
@@ -95,6 +97,14 @@
}
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;
@@ -108,4 +118,20 @@
    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> &params) {
    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