internal void ReceiveDataSyn(DataSyn syn) { this.recv_queue.Write(syn); var data = this.recv_queue.Dequeue(); this.OnData(Reactor.Buffer.Create(data)); var ack = new DataAck(this.recv_queue.SequenceNumber, this.recv_queue.WindowSize); this.socket.Send(this.endpoint, ack.Serialize()); }
public void Write(DataSyn payload) { if (this.WindowSize > 0) { if (payload.SequenceNumber >= this.SequenceNumber) { foreach (var _packet in this.packets) { if (_packet.SequenceNumber == payload.SequenceNumber) { return; } } this.packets.Add(payload); this.packets.Sort(); } } }