int32 process_listener(json_t *req, listener_dest_t *listener, int32 mask) { int8 *event_type = NULL; int8 *dest = NULL; int8 *context = NULL; int8 *protocol = NULL; int8 *name = NULL; int8 *description = NULL; json_t *elem = NULL; json_t *event_types = NULL; int32 array_size, i = 0; int32 rc = 0; context = json_string_value(json_object_get(req, RMM_JSON_CONTEXT)); dest = json_string_value(json_object_get(req, RMM_JSON_DEST)); protocol = json_string_value(json_object_get(req, RMM_JSON_PROTOCOL)); event_types = json_object_get(req, RMM_JSON_RF_EVT_TYPES); name = json_string_value(json_object_get(req, RMM_JSON_RF_NAME)); description = json_string_value(json_object_get(req, RMM_JSON_RF_DESC)); if (!(context && dest && protocol && event_types)) { HTTPD_ERR("get json string error\n"); return -1; } snprintf_s_s(listener->name, sizeof(listener->name), "%s", name); snprintf_s_s(listener->description, sizeof(listener->description), "%s", description); snprintf_s_s(listener->context, sizeof(listener->context), "%s", context); snprintf_s_s(listener->dest, sizeof(listener->dest), "%s", dest); snprintf_s_s(listener->protocol, sizeof(listener->protocol), "%s", protocol); listener->idx_mask = mask; array_size = json_array_size(event_types); if (is_event_types_valid(array_size, event_types) == -1) return -1; for (i = 0; i < array_size; i++) { elem = NULL; elem = json_array_get(event_types, i); if (elem == NULL) { HTTPD_ERR("get json array element error\n"); return -1; } event_type = json_string_value(elem); if(event_type == NULL) { HTTPD_ERR("get json string event error\n"); return -1; } if (subscribe_event(listener, event_type) != 0) return -1; } return 0; }
json_t *process_listener(json_t *req, listener_dest_t *listener, int32 mask, int32 node_type) { int8 *action = NULL; int8 *event_type = NULL; int8 *dest = NULL; int8 *type = NULL; int8 *protocol = NULL; json_t *elem = NULL; json_t *event_types = NULL; json_t *obj = NULL; int32 array_size, i = 0; action = json_string_value(json_object_get(req, RMM_JSON_ACTION)); type = json_string_value(json_object_get(req, RMM_JSON_TYPE)); dest = json_string_value(json_object_get(req, RMM_JSON_DEST)); protocol = json_string_value(json_object_get(req, RMM_JSON_PROTOCOL)); event_types = json_object_get(req, RMM_JSON_RF_EVT_TYPES); if (!(action && type && dest && protocol && event_types)) { HTTPD_ERR("get json string error\n"); return NULL; } snprintf(listener->type, sizeof(listener->type), "%s", type); snprintf(listener->dest, sizeof(listener->dest), "%s", dest); snprintf(listener->protocol, sizeof(listener->protocol), "%s", protocol); listener->idx_mask = mask; array_size = json_array_size(event_types); for (i = 0; i < array_size; i++) { elem = NULL; elem = json_array_get(event_types, i); if (elem == NULL) { HTTPD_ERR("get json array element error\n"); return NULL; } if ((obj = json_object_get(elem, RMM_JSON_RF_EVT)) != NULL) { event_type = json_string_value(obj); if(event_type == NULL) { HTTPD_ERR("get json string event error\n"); return NULL; } if (0 == strcmp(action, "subscribe")) subscribe_event(listener, event_type, node_type); else if (0 == strcmp(action, "unsubscribe")) unsubscribe_event(listener, event_type, node_type); } } return NULL; }
int32_t fs_opr_t::subscribe_event_heartbeat() { return subscribe_event(EVENT_HEARTBEAT); }
int32_t fs_opr_t::subscribe_event_normal() { return subscribe_event(EVENT_NORMAL); }