コード例 #1
0
END_TEST

START_TEST(test_cometd_should_handshake)
{
    cometd_conn_set_state(g_instance->conn, COMETD_HANDSHAKE_SUCCESS);
    fail_if(cometd_should_handshake(g_instance));

    cometd_conn_set_state(g_instance->conn, COMETD_CONNECTED);
    fail_if(cometd_should_handshake(g_instance));

    cometd_conn_set_state(g_instance->conn, COMETD_UNCONNECTED);
    cometd_advice* advice = cometd_advice_new();
    advice->reconnect = COMETD_RECONNECT_HANDSHAKE;
    cometd_conn_take_advice(g_instance->conn, advice);

    fail_unless(cometd_should_handshake(g_instance));

    cometd_conn_take_advice(g_instance->conn, NULL);
}
コード例 #2
0
ファイル: cometd.c プロジェクト: GhostGumm/CarbonComet
int
cometd_handshake(const cometd* h, cometd_callback cb)
{
  cometd_loop* loop = h->loop;
  cometd_conn* conn = h->conn;

  int code = ECOMETD_UNKNOWN;
  long backoff = 0;

  guint attempt;
  for (attempt = 1; cometd_should_handshake(h); ++attempt)
  {
    cometd_loop_wait(loop, backoff);

    code  = cometd_impl_handshake(h, cb);
    backoff = cometd_get_backoff(h, attempt);

    if (backoff == -1)
      break;
  }

  return code;
}