private void OnSessionTimeout(object state, CancellableTimer timer) { Session session = (Session)state; try { session.EnterExclusiveLock(); if (timer.IsCancelled) { return; } _sessions.TryRemove(session.SessionId, out session); session.HandleClientTimeOut(); } finally { session.ExitExclusiveLock(); } }
public void ScheduleSessionTimeout(Session session, CancellableTimerCallback callback, TimeSpan dueTime) { _timeoutTimer = CancellableTimer.Schedule(callback, session, dueTime); }
public void CancelSessionTimeout() { _timeoutTimer.Cancel(); _timeoutTimer = null; }