コード例 #1
0
ファイル: cometd.c プロジェクト: GhostGumm/CarbonComet
void
cometd_handle_advice(const cometd* h, cometd_advice* advice)
{
  if (advice == NULL) return;

  if (cometd_advice_is_handshake(advice))
    cometd_handshake(h, NULL);
}
コード例 #2
0
ファイル: cometd.c プロジェクト: GhostGumm/CarbonComet
gboolean	cometd_should_handshake(const cometd* h)
{
  cometd_conn* conn = h->conn;
  
  if (cometd_conn_is_state(conn, COMETD_HANDSHAKE_SUCCESS | COMETD_CONNECTED))
    return FALSE;

  return conn->advice == NULL || cometd_advice_is_handshake(conn->advice);
}
コード例 #3
0
ファイル: cometd.c プロジェクト: Maluuba/c-cometd-client
long
cometd_get_backoff(const cometd* h, long attempt)
{
  cometd_config* config = h->config;
  cometd_advice* advice = h->conn->advice;

  long backoff = config->backoff_increment;

  if (advice == NULL)
    backoff = cometd_impl_compute_backoff(config, attempt);
  else if (cometd_impl_should_backoff(advice, attempt))
    backoff = cometd_impl_compute_backoff(config, attempt-1); // offset attempt
  else if (cometd_advice_is_handshake(advice) || cometd_advice_is_retry(advice))
    backoff = advice->interval;
  else if (cometd_advice_is_none(advice))
    backoff = -1;

  return backoff;
}