| | |
| | | using namespace protomsg; |
| | | |
| | | // 加get参数 runType 1: 实时 0 轮询 |
| | | bool dbapi_get_cameras_by_runtype(void *handle, std::vector<protomsg::Camera> &list) { |
| | | bool dbapi_get_cameras_by_runType(void *handle, std::vector<protomsg::Camera> &list, char *runType, bool gb28181) { |
| | | const char *topic = DATA_URL_PREFIX("/camera/getCamerasByRunType"); |
| | | |
| | | bool ret = bus_dbapi_get_list(handle, topic, list); |
| | | |
| | | return ret; |
| | | if (gb28181) { |
| | | topic = DATA_URL_PREFIX("/gb28181/camera/getCamerasByRunType)"); |
| | | } |
| | | |
| | | // 加get参数 runType 1: 实时 0 轮询 |
| | | bool dbapi_get_gb28181_cameras_by_runtype(void *handle, std::vector<protomsg::Camera> &list) { |
| | | const char *topic = DATA_URL_PREFIX("/gb28181/camera/getCamerasByRunType"); |
| | | |
| | | bool ret = bus_dbapi_get_list(handle, topic, list); |
| | | std::map<string, string> params; |
| | | params["runType"] = runType; |
| | | bool ret = bus_dbapi_get_list(handle, topic, list, params); |
| | | params.clear(); |
| | | |
| | | return ret; |
| | | } |
| | |
| | | #ifndef C_BHOME_BUS_DBAPIS_H |
| | | #define C_BHOME_BUS_DBAPIS_H |
| | | |
| | | #include <map> |
| | | #include <vector> |
| | | |
| | | #include "proto/x86_64/fileanalysis.pb.h" |
| | |
| | | bool dbapi_get_timeranges(char *datactls, std::vector<protomsg::TimeRange> & list); |
| | | bool dbapi_get_camera_rules(void *handle, std::vector<protomsg::CameraAndRules> &list); |
| | | |
| | | bool dbapi_get_cameras_by_runtype(void *handle, std::vector<protomsg::Camera> &list); |
| | | bool dbapi_get_cameras_by_runType(void *handle, std::vector<protomsg::Camera> &list, char *runType, bool gb28181); |
| | | bool dbapi_get_gb28181_cameras_by_runtype(void *handle, std::vector<protomsg::Camera> &list); |
| | | bool dbapi_get_sdk_channel_set(void *handle, std::vector<protomsg::SdkChanSet> &list); |
| | | bool dbapi_get_sdks(void *handle, std::vector<protomsg::Sdk> &list); |
| | |
| | | #include <stdio.h> |
| | | |
| | | #include <map> |
| | | #include <memory> |
| | | #include <string> |
| | | #include <thread> |
| | |
| | | // } |
| | | |
| | | // 时间规则 |
| | | std::vector<protomsg::CameraTimerule> list; |
| | | if (dbapi_get_time_rules(handle, list)) { |
| | | for (unsigned int i = 0; i < list.size(); i++) { |
| | | printf("CameraTimerule: %s\n", list[i].id().c_str()); |
| | | } |
| | | } |
| | | // std::vector<protomsg::CameraTimerule> list; |
| | | // if (dbapi_get_time_rules(handle, list)) { |
| | | // for (unsigned int i = 0; i < list.size(); i++) { |
| | | // printf("CameraTimerule: %s\n", list[i].id().c_str()); |
| | | // } |
| | | // } |
| | | |
| | | //系统授权信息 |
| | | printf("isExpired:%d\n", dbapi_get_server_get_is_sys_expired(handle)); |
| | | // printf("isExpired:%d\n", dbapi_get_server_get_is_sys_expired(handle)); |
| | | |
| | | // 摄像机 |
| | | std::vector<protomsg::Camera> list; |
| | | char *runType = (char *)"1"; // 1 实时 0 轮询 |
| | | if (dbapi_get_cameras_by_runType(handle, list, runType, false)) { |
| | | for (unsigned int i = 0; i < list.size(); i++) { |
| | | printf("Camera: %s\n", list[i].id().c_str()); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | |
| | | return json; |
| | | } |
| | | |
| | | char *make_get_request(const char *topic, const std::map<string, string> *query_params) { |
| | | char *make_get_request(const char *topic, std::map<string, string> &query_params) { |
| | | yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL); |
| | | yyjson_mut_val *root = yyjson_mut_obj(doc); |
| | | yyjson_mut_obj_add_strn(doc, root, "path", topic, strlen(topic)); |
| | | yyjson_mut_obj_add_strn(doc, root, "method", "GET", 3); |
| | | |
| | | // 填充请求参数 |
| | | if (query_params != NULL) { |
| | | if (!query_params.empty()) { |
| | | yyjson_mut_val *query_map = yyjson_mut_obj(doc); |
| | | |
| | | std::map<string, string> t_map = *query_params; |
| | | // std::map<string, string> t_map = *query_params; |
| | | std::map<string, string>::iterator iter; |
| | | for (iter = t_map.begin(); iter != t_map.end(); iter++) { |
| | | for (iter = query_params.begin(); iter != query_params.end(); iter++) { |
| | | yyjson_mut_val *_key = yyjson_mut_str(doc, iter->first.c_str()); |
| | | |
| | | yyjson_mut_val *param = yyjson_mut_arr(doc); |
| | |
| | | return json; |
| | | } |
| | | |
| | | 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_by_key(const char *json, const char *flag_key, const char *data_key, char **pptr_data, yyjson_type *ptr_type) { |
| | | int ret = -1; |
| | | size_t data_len = 0; |
| | | const char * ptr_value = NULL; |
| | |
| | | const char * data_name = data_key; |
| | | const char * msg_name = "msg"; |
| | | |
| | | if(NULL == *pptr_data) |
| | | { |
| | | if (NULL == *pptr_data) { |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | // Read JSON and get root |
| | | yyjson_doc *doc = yyjson_read(json, strlen(json), 0); |
| | | yyjson_val *root = yyjson_doc_get_root(doc); |
| | | |
| | | if ( NULL != success_name ) |
| | | { |
| | | if (NULL != success_name) { |
| | | // Get root["success"] |
| | | yyjson_val *success = yyjson_obj_get(root, success_name); |
| | | |
| | | int success_val = yyjson_get_bool(success); |
| | | printf("success: %d\n", success_val); |
| | | if(!success_val) |
| | | { |
| | | if (!success_val) { |
| | | yyjson_doc_free(doc); |
| | | return -1; |
| | | } |
| | |
| | | bool bus_dbapi_get_topic_data(void *handle, const char *topic, crepmsg **pptr_repmsg, size_t len) { |
| | | const auto topicl = strlen(topic); |
| | | auto reqData = make_get_request(topic); |
| | | auto reqmsg = make_req_msg(topic, topicl, reqData, strlen(reqData)); |
| | | |
| | | if (bus_client_request(handle, reqmsg, pptr_repmsg)) { |
| | | printf("======>> bus_client_reqest [%s] get [%s]\n", topic, (*pptr_repmsg)->data); |
| | | } else { |
| | | free(reqData); |
| | | return false; |
| | | } |
| | | |
| | | len = strlen((*pptr_repmsg)->data) + 1; |
| | | |
| | | free(reqData); |
| | | return true; |
| | | } |
| | | |
| | | bool bus_dbapi_get_topic_data(void *handle, const char *topic, crepmsg **pptr_repmsg, size_t len, std::map<string, string> ¶ms) { |
| | | const auto topicl = strlen(topic); |
| | | auto reqData = make_get_request(topic, params); |
| | | auto reqmsg = make_req_msg(topic, topicl, reqData, strlen(reqData)); |
| | | |
| | | if (bus_client_request(handle, reqmsg, pptr_repmsg)) { |
| | |
| | | 修改内容 : 新生成函数 |
| | | |
| | | *****************************************************************************/ |
| | | int get_value_by_key(char *json, const char *key, char **pptr_data) |
| | | { |
| | | int get_value_by_key(char *json, const char *key, char **pptr_data) { |
| | | size_t data_len = 0; |
| | | |
| | | // Read JSON and get root |
| | |
| | | |
| | | char * val_str = (char *)yyjson_get_str(val); |
| | | printf("val: %s\n", val_str); |
| | | if(NULL == val_str) |
| | | { |
| | | if (NULL == val_str) { |
| | | yyjson_doc_free(doc); |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | char *ptr_value = yyjson_val_write(val, YYJSON_WRITE_NOFLAG, &data_len); |
| | | printf("data: %s\n", ptr_value); |
| | |
| | | |
| | | 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); |
| | | 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); |
| | | 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); |
| | |
| | | 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 |