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; }
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); }
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; }
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; }
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)); }
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; }
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; }
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); }
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); }
Sess * session_get_sess_from_conn (Conn *conn) { assert (object_is_conn (conn)); return CONN_PRIVATE_DATA (conn)->sess; }