Griffin.Net.Channels.TcpChannel.TcpChannel C# (CSharp) Method

TcpChannel() public method

Initializes a new instance of the TcpChannel class.
public TcpChannel ( IBufferSlice readBuffer, IMessageEncoder encoder, IMessageDecoder decoder ) : System
readBuffer IBufferSlice Buffer used for our reading.
encoder IMessageEncoder Used to encode messages before they are put in the MicroMessage body of outbound messages.
decoder IMessageDecoder /// Used to decode the body of incoming MicroMessages. The MessageReceived delegate will be /// overridden by this class. ///
return System
        public TcpChannel(IBufferSlice readBuffer, IMessageEncoder encoder, IMessageDecoder decoder)
        {
            IsConnected = false;
            if (readBuffer == null) throw new ArgumentNullException("readBuffer");
            if (encoder == null) throw new ArgumentNullException("encoder");
            if (decoder == null) throw new ArgumentNullException("decoder");

            _readArgs = new SocketAsyncEventArgs();
            _readArgs.SetBuffer(readBuffer.Buffer, readBuffer.Offset, readBuffer.Capacity);
            _readArgs.Completed += OnReadCompleted;
            _readArgsWrapper = new SocketAsyncEventArgsWrapper(_readArgs);

            _encoder = encoder;
            _decoder = decoder;
            _decoder.MessageReceived = OnMessageReceived;

            _writeArgs = new SocketAsyncEventArgs();
            _writeArgs.Completed += OnSendCompleted;
            _writeArgsWrapper = new SocketAsyncEventArgsWrapper(_writeArgs);

            _sendCompleteAction = (channel, message) => { };
            _disconnectAction = (channel, exception) => { };
            ChannelFailure = (channel, error) => HandleRemoteDisconnect(SocketError.ProtocolNotSupported, error);

            RemoteEndpoint = EmptyEndpoint.Instance;
            ChannelId = GuidFactory.Create().ToString();
            Data = new ChannelData();
        }