static void sess_destroyed (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg) { Sess_Private_Data *priv; struct Conn_Info *ci; Sess *sess; int i, j, rd; assert (et == EV_SESS_DESTROYED && object_is_sess (obj)); sess = (Sess *) obj; priv = SESS_PRIVATE_DATA (sess); for (i = 0; i < param.max_conns; ++i) { ci = priv->conn_info + i; if (ci->conn) core_close (ci->conn); rd = ci->rd; for (j = 0; j < ci->num_pending; ++j) { call_dec_ref (ci->call[rd]); rd = (rd + 1) % MAX_PIPED; } } }
static void user_think_time_expired(struct Timer *t, Any_Type arg) { Sess *sess = arg.vp; Sess_Private_Data *priv; assert(object_is_sess(sess)); priv = SESS_PRIVATE_DATA (sess); priv->timer = 0; issue_calls(sess, priv); }
static void sess_created (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg) { Sess_Private_Data *priv; Sess *sess; assert (et == EV_SESS_NEW && object_is_sess (obj)); sess = (Sess *) obj; priv = SESS_PRIVATE_DATA (sess); priv->birth_time = timer_now (); }
static void sess_destroyed (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg) { Sess_Private_Data *priv; Sess *sess; Time now; assert (et == EV_SESS_DESTROYED && object_is_sess (obj)); sess = (Sess *) obj; priv = SESS_PRIVATE_DATA (sess); now=timer_now(); if(now>=end)core_exit(); if (++num_sessions_destroyed >= param.wsessreq.num_sessions) core_exit (); }
static void sess_destroyed (Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg) { size_t old_size, new_size; Sess_Private_Data *priv; Sess *sess; Time delta, now = timer_now (); assert (et == EV_SESS_DESTROYED && object_is_sess (obj)); sess = (Sess *) obj; priv = SESS_PRIVATE_DATA (sess); delta = (now - priv->birth_time); if (sess->failed) { ++st.num_failed; st.failtime_sum += delta; } else { st.num_conns += priv->num_conns; ++st.num_completed_since_last_sample; ++st.num_completed; st.lifetime_sum += delta; } if (priv->num_calls_completed > st.longest_session) { st.longest_session = priv->num_calls_completed; if (st.longest_session >= st.len_hist_alloced) { old_size = st.len_hist_alloced*sizeof (st.len_hist[0]); st.len_hist_alloced = st.longest_session + 16; new_size = st.len_hist_alloced*sizeof (st.len_hist[0]); st.len_hist = realloc (st.len_hist, new_size); if (!st.len_hist) { fprintf (stderr, "%s.sess_stat: Out of memory\n", prog_name); exit (1); } memset ((char *) st.len_hist + old_size, 0, new_size - old_size); } } ++st.len_hist[priv->num_calls_completed]; }
static void sess_destroyed(Event_Type et, Object *obj, Any_Type regarg, Any_Type callarg) { Sess_Private_Data *priv; Sess *sess; assert(et == EV_SESS_DESTROYED && object_is_sess(obj)); sess = (Sess *) obj; priv = SESS_PRIVATE_DATA (sess); if (priv->timer) { timer_cancel(priv->timer); priv->timer = 0; } if (++num_sessions_destroyed >= param.wsesslog.num_sessions) core_exit(); }