コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
 public void InitChannel(SocketServerChannel channel)
 {
     channel.ChannelPipeline.AddLast("decoder", new MessageDecoder());
     channel.ChannelPipeline.AddLast("handler", new MessageHandler());
     Console.WriteLine($"new connnect {channel}");
 }
コード例 #4
0
 /// <summary>
 /// 移除Channel
 /// </summary>
 /// <param name="channel"></param>
 internal void UnregisteredChannel(SocketServerChannel channel)
 {
     channels.TryRemove(channel.Id, out _);
 }
コード例 #5
0
 /// <summary>
 /// 添加Channel
 /// </summary>
 /// <param name="channel"></param>
 internal void RegisteredChannel(SocketServerChannel channel)
 {
     channels.TryAdd(channel.Id, channel);
 }