Exemple #1
0
static void
conn_destroyed (Event_Type et, Object *obj, Any_Type reg_arg, Any_Type c_arg)
{
  Conn *s = (Conn *) obj;
  Time lifetime;
  u_int bin;

  assert (et == EV_CONN_DESTROYED && object_is_conn (s)
	  && num_active_conns > 0);

  if (s->basic.num_calls_completed > 0)
    {
      lifetime = timer_now () - s->basic.time_connect_start;
      basic.conn_lifetime_sum += lifetime;
      basic.conn_lifetime_sum2 += SQUARE (lifetime);
      if (lifetime < basic.conn_lifetime_min)
	basic.conn_lifetime_min = lifetime;
      if (lifetime > basic.conn_lifetime_max)
	basic.conn_lifetime_max = lifetime;
      ++basic.num_lifetimes;

      bin = lifetime*NUM_BINS/MAX_LIFETIME;
      if (bin >= NUM_BINS)
	bin = NUM_BINS;
      ++basic.conn_lifetime_hist[bin];
    }
  --num_active_conns;
 
}
Exemple #2
0
static void
conn_connected (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg)
{
  Conn_Private_Data *cpriv;
  struct Conn_Info *ci;
  Sess *sess;
  Conn *conn;

  assert (et == EV_CONN_CONNECTED && object_is_conn (obj));

  conn = (Conn *) obj;
  cpriv = CONN_PRIVATE_DATA (conn);
  sess = cpriv->sess;
  ci = cpriv->ci;

  ci->is_connected = 1;

#ifdef HAVE_SSL
  if (param.ssl_reuse && !sess->ssl && ci->conn->ssl)
    {
      sess->ssl = SSL_dup (ci->conn->ssl);
      if (DBG > 0)
	fprintf (stderr, "create_conn: cached SSL session %p as %p\n",
		 (void *) ci->conn->ssl, (void *) sess->ssl);
    }
#endif /* HAVE_SSL */

  send_calls (sess, ci);
}
Exemple #3
0
static void
conn_connected(Event_Type et, Object *obj, Any_Type reg_arg,
               Any_Type call_arg) {
    Conn *s = (Conn *) obj;

    assert(et == EV_CONN_CONNECTED && object_is_conn(s));
    basic.conn_connect_sum += timer_now() - s->basic.time_connect_start;
    ++basic.num_connects;
}
Exemple #4
0
static void
conn_connecting(Event_Type et, Object *obj, Any_Type reg_arg, Any_Type c_arg) {
    Conn *s = (Conn *) obj;

    assert(et == EV_CONN_CONNECTING && object_is_conn(s));

    s->basic.time_connect_start = timer_now();
    ++basic.num_conns_issued;
}
Exemple #5
0
static void
conn_connected (Event_Type et, Object *obj, Any_Type reg_arg,
		Any_Type call_arg)
{
  Conn *s = (Conn *) obj;

  assert (et == EV_CONN_CONNECTED && object_is_conn (s));

  updatestats (&es_connect, (timer_now () - s->basic.time_connect_start));

}
Exemple #6
0
static void
conn_destroyed (Event_Type et, Object *obj, Any_Type reg_arg, Any_Type c_arg)
{
  Conn *s = (Conn *) obj;

  assert (et == EV_CONN_DESTROYED && object_is_conn (s)
	  && num_active_conns > 0);

  if (s->basic.num_calls_completed > 0)
    updatestats(&es_lifetime, timer_now () - s->basic.time_connect_start);
  --num_active_conns;
}
Exemple #7
0
static void
conn_connected (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg)
{
  Sess_Private_Data *priv;
  Sess *sess;
  Conn *conn;

  assert (et == EV_CONN_CONNECTED && object_is_conn (obj));
  conn = (Conn *) obj;
  sess = session_get_sess_from_conn (conn);
  priv = SESS_PRIVATE_DATA (sess);
  ++priv->num_conns;
}
Exemple #8
0
static void
conn_timeout (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg)
{
  Conn_Private_Data *cpriv;
  Conn *conn;

  /* doh, this session is dead now... */

  assert (et == EV_CONN_TIMEOUT && object_is_conn (obj));
  conn = (Conn *) obj;
  cpriv = CONN_PRIVATE_DATA (conn);

  sess_failure (cpriv->sess);
}
Exemple #9
0
static void
conn_failed (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg)
{
  Conn_Private_Data *cpriv;
  struct Conn_Info *ci;
  Conn *conn;
  Sess *sess;

  assert (et == EV_CONN_FAILED && object_is_conn (obj));
  conn = (Conn *) obj;
  cpriv = CONN_PRIVATE_DATA (conn);
  sess = cpriv->sess;
  ci = cpriv->ci;

  if (ci->is_successful || param.retry_on_failure)
    /* try to create a new connection so we can issue the remaining
       calls. */
    create_conn (sess, ci);
  else
    /* The connection failed before we got even one reply, so declare
       the session as dead... */
    sess_failure (cpriv->sess);
}
Exemple #10
0
Sess *
session_get_sess_from_conn (Conn *conn)
{
  assert (object_is_conn (conn));
  return CONN_PRIVATE_DATA (conn)->sess;
}