/// <summary> /// Attaches the channel to an existing socket. /// </summary> public void Attach(uint channelId, Socket socket) { if (socket == null) { throw new ArgumentNullException(nameof(socket)); } lock (DataLock) { // check for existing socket. if (Socket != null) { throw new InvalidOperationException("Channel is already attached to a socket."); } ChannelId = channelId; State = TcpChannelState.Connecting; Socket = new TcpMessageSocket(this, socket, BufferManager, Quotas.MaxBufferSize); Utils.Trace("{0} SOCKET ATTACHED: {1:X8}, ChannelId={2}", ChannelName, Socket.Handle, ChannelId); Socket.ReadNextMessage(); // automatically clean up the channel if no hello received. StartCleanupTimer(StatusCodes.BadTimeout); } }
/// <summary> /// Attaches the channel to an existing socket. /// </summary> public void Attach(uint channelId, Socket socket) { if (socket == null) throw new ArgumentNullException("socket"); lock (DataLock) { // check for existing socket. if (Socket != null) { throw new InvalidOperationException("Channel is already attached to a socket."); } ChannelId = channelId; State = TcpChannelState.Connecting; Socket = new TcpMessageSocket(this, socket, BufferManager, Quotas.MaxBufferSize); Utils.Trace("TCPSERVERCHANNEL SOCKET ATTACHED: {0:X8}, ChannelId={1}", Socket.Handle, ChannelId); Socket.ReadNextMessage(); // automatically clean up the channel if no hello recieved. StartCleanupTimer(StatusCodes.BadTimeout); } }