void IStatus <Timestamp> .Update(Timestamp timestamp) { SocketMessage message; while ((message = _Line.Read()) != null) { _Timeout = 0; SocketMessage package = message; PeerOperation operation = (PeerOperation)package.GetOperation(); if (operation == PeerOperation.Transmission) { _Stream.Add(package); } else if (operation == PeerOperation.RequestDisconnect) { DisconnectEvent(); } } _Timeout += timestamp.DeltaTicks; if (_Timeout > Config.Timeout * Timestamp.OneSecondTicks) { DisconnectEvent(); } }
void IStage <Timestamp> .Update(Timestamp timestamp) { while (_SendTasks.Count > 0) { Task task = null; if (_SendTasks.TryDequeue(out task)) { for (int i = task.Offset; i < task.Count; i++) { _SendBytes.Add(task.Buffer[i]); } task.Done(task.Count); } } if (_SendBytes.Count > 0) { _Line.WriteTransmission(_SendBytes.ToArray()); _SendBytes.Clear(); } while (_Stream.Count > 0) { lock (_ReadTask) { var handler = _ReadTask; if (handler.Buffer != null) { var readCount = _Stream.Read(handler.Buffer, handler.Offset, handler.Count); if (readCount > 0) { handler.Done(readCount); } } } } SocketMessage message; while ((message = _Line.Read()) != null) { _Timeout = 0; var package = message; var operation = (PeerOperation)package.GetOperation(); if (operation == PeerOperation.Transmission) { _Stream.Add(package); } else if (operation == PeerOperation.RequestDisconnect) { DisconnectEvent(); } } _Timeout += timestamp.DeltaTicks; if (_Timeout > Config.Timeout * Timestamp.OneSecondTicks) { DisconnectEvent(); } }