/// <summary> /// Channel建立 /// </summary> /// <param name="socket"></param> protected void ChannelConnected(Socket socket) { var channel = new SocketServerChannel(this, socket, ByteBufPool); ServerHandler?.InitChannel(channel); channel.Start(); RegisteredChannel(channel); channel.ChannelPipeline.FireChannelRegistered(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="channel"></param> public DefaultChannelPipeline(SocketServerChannel channel) { DefaultChannelHandlerContext emptyHeader = new DefaultChannelHandlerContext(this, "Internal_Head_Handler", null); DefaultChannelHandlerContext emptyTailer = new DefaultChannelHandlerContext(this, "Internal_Tail_Handler", null); Head = emptyHeader; Tail = emptyTailer; Head.Next = Tail; Tail.Prev = Head; Channel = channel; }
public void InitChannel(SocketServerChannel channel) { channel.ChannelPipeline.AddLast("decoder", new MessageDecoder()); channel.ChannelPipeline.AddLast("handler", new MessageHandler()); Console.WriteLine($"new connnect {channel}"); }
/// <summary> /// 移除Channel /// </summary> /// <param name="channel"></param> internal void UnregisteredChannel(SocketServerChannel channel) { channels.TryRemove(channel.Id, out _); }
/// <summary> /// 添加Channel /// </summary> /// <param name="channel"></param> internal void RegisteredChannel(SocketServerChannel channel) { channels.TryAdd(channel.Id, channel); }