Example #1
0
 protected TcpTransportLayer(ITCPTransport transport, byte connectionId, byte remoteConnectionId)
 {
     this.Transport = transport;
     this._connectionId = connectionId;
     this._remoteConnectionId = remoteConnectionId;
     Socket = new BufferedTcpOverUdptSocket(this);
 }
Example #2
0
 protected TcpTransportLayer(ITCPTransport transport, byte connectionId, byte remoteConnectionId)
 {
     this.Transport           = transport;
     this._connectionId       = connectionId;
     this._remoteConnectionId = remoteConnectionId;
     Socket = new BufferedTcpOverUdptSocket(this);
 }
 public TcpTransportLayerSlidingWindow(ITCPTransport transport, byte connectionId, byte remoteConnectionId, ushort firstLocalSequence, ushort firstRemoteSequence)
     : base(transport, connectionId, remoteConnectionId)
 {
     _sendWindow = new ITcpDataPacket[WindowSize];
     _recvWindow = new ITcpDataPacket[WindowSize];
     _sendBuffer = new CircularBuffer<byte>(BufferSize);
     Stats = new TcpSlidingWindowStats();
     // setup our start seq numbers and window numbering
     _sendWindowNextFree = _recvWindowsNextFree = _oldestUnackedPacket = 0;
     _nextDataSeqOut = firstLocalSequence;
     _nextDataSeqIn = firstRemoteSequence;
     _highestDataSeqIn = ushort.MaxValue;
     _retryTimer = new System.Timers.Timer(_retryInterval) { AutoReset = false };
     _retryTimer.Elapsed += delegate { RetryPacketSend(); };
     dataSenderThread = new Thread(DataSender) { IsBackground = true, Name = "dataSender[" + connectionId + "-" + remoteConnectionId + "]" };
     dataSenderThread.Start();
 }
Example #4
0
 public TcpTransportLayerSlidingWindow(ITCPTransport transport, byte connectionId, byte remoteConnectionId, ushort firstLocalSequence, ushort firstRemoteSequence)
     : base(transport, connectionId, remoteConnectionId)
 {
     _sendWindow = new ITcpDataPacket[WindowSize];
     _recvWindow = new ITcpDataPacket[WindowSize];
     _sendBuffer = new CircularBuffer <byte>(BufferSize);
     Stats       = new TcpSlidingWindowStats();
     // setup our start seq numbers and window numbering
     _sendWindowNextFree = _recvWindowsNextFree = _oldestUnackedPacket = 0;
     _nextDataSeqOut     = firstLocalSequence;
     _nextDataSeqIn      = firstRemoteSequence;
     _highestDataSeqIn   = ushort.MaxValue;
     _retryTimer         = new System.Timers.Timer(_retryInterval)
     {
         AutoReset = false
     };
     _retryTimer.Elapsed += delegate { RetryPacketSend(); };
     dataSenderThread     = new Thread(DataSender)
     {
         IsBackground = true, Name = "dataSender[" + connectionId + "-" + remoteConnectionId + "]"
     };
     dataSenderThread.Start();
 }
Example #5
0
        private ushort _sequenceOut = ushort.MaxValue - 50; // sequence number we last sent out

        #endregion Fields

        #region Constructors

        public TcpTransportLayerOne4One(ITCPTransport transport, byte connectionId, byte remoteConnectionId, ushort firstLocalSequence, ushort firstRemoteSequence)
            : base(transport, connectionId, remoteConnectionId)
        {
            AckWaitInterval = 300;
        }
 public TcpTransportLayerOne4One(ITCPTransport transport, byte connectionId, byte remoteConnectionId, ushort firstLocalSequence, ushort firstRemoteSequence)
     : base(transport, connectionId, remoteConnectionId)
 {
     AckWaitInterval = 300;
 }