Example #1
0
JsonNode*   cometd_ping_ls(cometd* h, char *target)
{
  JsonObject	*adviceObject = json_object_new();
  JsonNode	*adviceNode = json_node_new(JSON_NODE_OBJECT);
  JsonNode	*adviceRoot = json_node_init_object(adviceNode, adviceObject);

  adviceObject = json_node_get_object(adviceRoot);

  json_object_set_string_member(adviceObject, "folder", "/");

  
  JsonNode*	root = json_node_new(JSON_NODE_OBJECT);
  JsonObject*	obj  = json_object_new();
  gint64	seed = ++(h->conn->msg_id_seed);

  char*  connection_type = cometd_current_transport(h)->name;
  
  json_object_set_int_member   (obj, COMETD_MSG_ID_FIELD,      seed);
  json_object_set_string_member(obj, COMETD_MSG_CHANNEL_FIELD, target);
  json_object_set_string_member(obj, "connectionType",         connection_type);
  json_object_set_member(obj, "data", adviceRoot);
  json_object_set_string_member(obj, "clientId",               cometd_conn_client_id(h->conn));
 
  json_node_take_object(root, obj);

  return(root);
}
Example #2
0
int
cometd_transport_send(const cometd* h, JsonNode* msg)
{
  cometd_transport* t = cometd_current_transport(h);
  g_return_val_if_fail(t != NULL, ECOMETD_UNKNOWN);

  return cometd_impl_send_msg_sync(h, msg, t);
}
END_TEST

START_TEST (test_cometd_process_handshake_success)
{
    cometd_conn* conn = g_instance->conn;
    JsonNode* n = json_from_fixture("handshake_resp_lp");

    fail_unless(cometd_conn_is_state(conn, COMETD_UNINITIALIZED));
    fail_unless(cometd_current_transport(g_instance) == NULL);
    fail_unless(cometd_conn_client_id(conn) == NULL);

    int code = cometd_process_handshake(g_instance, n);

    fail_unless(code == COMETD_SUCCESS);
    fail_unless(cometd_conn_is_state(conn, COMETD_HANDSHAKE_SUCCESS));
    fail_if(cometd_current_transport(g_instance) == NULL);
    fail_if(cometd_conn_client_id(conn) == NULL);

    json_node_free(n);
}
END_TEST

START_TEST (test_cometd_process_handshake_no_transport)
{
    cometd_conn* conn = g_instance->conn;
    JsonNode* n = json_from_fixture("handshake_resp_unsupported_transports");

    fail_unless(cometd_conn_is_state(conn, COMETD_UNINITIALIZED));
    fail_unless(cometd_current_transport(g_instance) == NULL);
    fail_unless(cometd_conn_client_id(conn) == NULL);

    int code = cometd_process_handshake(g_instance, n);

    fail_unless(code == ECOMETD_NO_TRANSPORT);
    fail_unless(cometd_conn_is_state(conn, COMETD_UNINITIALIZED));
    fail_unless(cometd_current_transport(g_instance) == NULL);
    fail_unless(cometd_conn_client_id(conn) == NULL);
    fail_if(cometd_conn_advice(conn) == NULL);

    json_node_free(n);
}
Example #5
0
int	cometd_impl_handshake(const cometd* h, cometd_callback cb)
{
  int code = COMETD_SUCCESS;
  JsonNode* handshake = cometd_new_handshake_message(h);

  code = cometd_impl_send_msg_sync(h, handshake, NULL);

  if (code == COMETD_SUCCESS && !cometd_current_transport(h))
  {
    code = ECOMETD_NO_TRANSPORT;
  }

  json_node_free(handshake);

  return code;
}
Example #6
0
JsonNode*
cometd_recv(const cometd* h)
{
  JsonNode *payload = NULL;
  cometd_transport* transport = NULL;
  
  transport = cometd_current_transport(h);
  g_assert(transport != NULL);

  payload = transport->recv(h);

  if (payload == NULL)
    payload = cometd_msg_wrap(cometd_msg_bad_connect_new(h));

  return payload;
}
Example #7
0
JsonNode*
cometd_msg_connect_new(const cometd* h) {
    JsonNode*   root = json_node_new(JSON_NODE_OBJECT);
    JsonObject* obj  = json_object_new();

    gint64 seed = ++(h->conn->msg_id_seed);
    char*  connection_type = cometd_current_transport(h)->name;

    json_object_set_int_member   (obj, COMETD_MSG_ID_FIELD,      seed);
    json_object_set_string_member(obj, COMETD_MSG_CHANNEL_FIELD, COMETD_CHANNEL_META_CONNECT);
    json_object_set_string_member(obj, "connectionType",         connection_type);
    json_object_set_string_member(obj, "clientId",               cometd_conn_client_id(h->conn));

    json_node_take_object(root, obj);

    return root;
}