JsonNode* cometd_msg_extract_connect(JsonNode* payload) { JsonNode* connect = NULL; JsonArray* arr = json_node_get_array(payload); GList* msgs = json_array_get_elements(arr); gint i; gint index = -1; GList* item; for (i = 0, item = msgs; item; item = g_list_next(item), ++i) { JsonNode* msg = item->data; char* channel = cometd_msg_channel(msg); if (strcmp(COMETD_CHANNEL_META_CONNECT, channel) == 0) index = i; free(channel); } if (index > -1) { connect = json_array_dup_element(arr, index); json_array_remove_element(arr, index); } g_list_free(msgs); return connect; }
void trg_prefs_del_profile(TrgPrefs * p, JsonObject * profile) { JsonArray *profiles = trg_prefs_get_profiles(p); GList *profilesList = json_array_get_elements(profiles); GList *li; JsonNode *node; int i = 0; for (li = profilesList; li; li = g_list_next(li)) { node = (JsonNode *) li->data; if (profile == json_node_get_object(node)) { json_array_remove_element(profiles, i); break; } i++; } g_list_free(profilesList); trg_prefs_profile_change_emit_signal(p); }