public void Tick() { var now = Environment.TickCount; if (State == PixocketState.Connecting && TimeDelta(_lastConnectRequestSend, now) >= ConnectRequestResendPeriod) { SendConnectionRequest(); } foreach (var seqState in _seqStates) { if (TimeDelta(seqState.Value.LastActive, now) > ConnectionTimeout) { _toDelete.Add(seqState); continue; } seqState.Value.Tick(seqState.Key, SubSock, now, AckTimeout, FragmentTimeout); } var toDeleteCount = _toDelete.Count; for (int i = 0; i < toDeleteCount; ++i) { var seqState = _toDelete[i]; _seqStates.Remove(seqState.Key); _callbacks.OnDisconnect(seqState.Key, DisconnectReason.Timeout); _seqStatesPool.Put(seqState.Value); } _toDelete.Clear(); }
public void Tick() { while (_disconnectQueue.TryTake(out var disconnectPair)) { _callbacks.OnDisconnect(disconnectPair.Key, disconnectPair.Value); } while (_connectQueue.TryTake(out var connectEndPoint)) { _callbacks.OnConnect(connectEndPoint); } }