예제 #1
0
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;
}
예제 #2
0
int	cometd_process_msg(const cometd* h, JsonNode* msg)
{
  cometd_ext_fire_incoming(h->exts, h, msg);

  char* channel = cometd_msg_channel(msg);
  int ret = cometd_fire_listeners(h, channel, msg);
  free(channel); 

  return ret;
}