Beispiel #1
0
void
cometd_handle_advice(const cometd* h, cometd_advice* advice)
{
  if (advice == NULL) return;

  if (cometd_advice_is_handshake(advice))
    cometd_handshake(h, NULL);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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;
}