private void InitializeStream() { sendStream = NetStream.Create(); AdvanceLocalSequence(); var header = WriteHeader(); reliableWindow.Add(header.ObjSequence, sendStream); sendWindow.Add(header.ObjSequence); sendWindowTime.Add(header.SendTime); }
internal void ForceAck() { if (sendStream != null) { return; } sendStream = NetStream.Create(); WriteHeader(); FlushStream(); }
/// <summary> Attempts to connect to a peer located at the supplied endpoint. </summary> public void ConnectToPeer(IPEndPoint endpoint) { if (EndpointConnected(endpoint) || ConnectingTo(endpoint)) { return; } NetStream approvalData = NetStream.Create(); approvalData.WriteByte((byte)ByteCmd.ConnectToPeer); Events.WritePeerApproval(endpoint, approvalData); Connect(endpoint, approvalData); }
/// <summary> Attempts to connect to a server located at the supplied endpoint. </summary> public void Connect(IPEndPoint endpoint) { if (EndpointConnected(endpoint) || connectingEndpoints.Contains(endpoint)) { return; } NetStream approvalData = NetStream.Create(); approvalData.WriteByte((byte)ByteCmd.Connect); Events.WriteApproval(endpoint, approvalData); Connect(endpoint, approvalData); }
/// <summary> Receives data until CanReceive is no longer true (receive buffer empty). </summary> private void ReceiveAll() { if (socket == null) { return; } while (CanReceive()) { var readStream = NetStream.Create(); readStream.Socket = this; int received = 0; if (!TryReceive(readStream.Data, readStream.Data.Length, ref received, ref endPoint)) { return; } readStream.Length = received << 3; ProcessReceived(endPoint, received, readStream); } }