示例#1
0
        public void OnTransportWrite(IUdpSession session, ref WrappedWriter writer, WrappedArgs args)
        {
            //Console.WriteLine($"{nameof(UdpFilter_2)}.{nameof(OnTransportWrite)}");
            var buffer = args.Value as byte[];

            writer.Write(buffer);
        }
示例#2
0
        public void OnTransportWrite(ITcpSession session, ref WrappedWriter writer, WrappedArgs args)
        {
            var buffer = args.Value as byte[];

            writer.Write(buffer);
            writer.Write(this.symbol);
        }
示例#3
0
        public void OnTransportRead(IUdpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            long length = reader.Length;
            var  buffer = reader.ReadBuffer((int)length);
            //string str= System.Text.Encoding.UTF8.GetString(buffer.FirstSpan);

            //Console.WriteLine($"{nameof(UdpFilter_2)}.{nameof(OnTransportRead)}>>LoaclAddress:{session.LocalAddress}    remoteAddress:{session.RcvAddress}>>" + str);
        }
示例#4
0
        public void OnTransportRead(IKcpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            int length = (int)reader.Length;
            var buffer = reader.ReadBuffer(length);

            //string str = System.Text.Encoding.UTF8.GetString(buffer.FirstSpan);
            //Console.WriteLine($"频道:{session.Conv},收到消息:{str}" );
        }
示例#5
0
        public void OnTransportRead(IUdpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            this.buffers.Clear();
            var buffer = reader.ReadBuffer((int)reader.Length);

            this.buffers.Add(buffer.First.GetBinaryArray());
            args.Value = this.buffers;
        }
示例#6
0
        public void OnTransportWrite(IUdpSession session, ref WrappedWriter writer, WrappedArgs args)
        {
            if (this.isInvalid || this.isStop)
            {
                return;
            }

            this.controller.OnUdpMessageOutput(session, ref writer, args);
        }
示例#7
0
 public void OnTransportWrite(IUdpSession session, ref WrappedWriter writer, WrappedArgs args)
 {
     byte[] bytes = args.Value as byte[];
     if (bytes != null)
     {
         writer.Write(bytes.Length);
         writer.Write(bytes);
     }
 }
示例#8
0
        public void OnTransportRead(IUdpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            if (this.isInvalid || this.isStop)
            {
                return;
            }

            this.controller.OnUdpMessageInput(session, ref reader, args);
        }
示例#9
0
        public void OnTransportRead(ITcpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            List <ReadOnlySequence <byte> > buffers = (List <ReadOnlySequence <byte> >)args.Value;

            for (int i = 0; i < buffers.Count; i++)
            {
                session.Write(SocketConfig.message);
            }

            session.FlushAsync().NoAwait();
        }
示例#10
0
 public void OnTransportRead(ITcpSession session, ref WrappedReader reader, WrappedArgs args)
 {
     this.buffers.Clear();
     args.Value = this.buffers;
     while (reader.TryFindPosition(this.symbol, out SequencePosition endPosition))
     {
         var buffer = reader.ReadBuffer(endPosition);
         var length = buffer.Length - this.symbol.Length;
         this.buffers.Add(buffer.Slice(buffer.Start, length));
     }
 }
示例#11
0
        public void OnTransportWrite(ITcpSession session, ref WrappedWriter writer, WrappedArgs args)
        {
            var buffer = args.Value as byte[];

            if (buffer.Length > this.maxPackLength)
            {
                throw new Exception("pack length error!!!" + buffer.Length);
            }

            writer.Write((int)buffer.Length);
            writer.Write(buffer);
        }
示例#12
0
        public void OnTransportRead(ITcpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            Console.WriteLine($"{nameof(TcpTestFilter_Client)}.{nameof(OnTransportRead)}");
            List <ReadOnlySequence <byte> > buffers = (List <ReadOnlySequence <byte> >)args.Value;

            for (int i = 0; i < buffers.Count; i++)
            {
                var    buffer = buffers[i];
                string str    = System.Text.Encoding.UTF8.GetString(buffer.FirstSpan);
                Console.WriteLine("收到》》" + str);
            }
        }
示例#13
0
        public void OnTransportRead(ITcpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            this.buffers.Clear();
            args.Value = this.buffers;

            while (reader.IsLengthEnough(this.currentReadLength))
            {
                if (this.currentReadPart == PackPart.Head)
                {
                    this.currentReadLength = reader.ReadInt32();
                    if (this.currentReadLength > this.maxPackLength)
                    {
                        throw new Exception("pack length error!!!" + currentReadLength);
                    }
                    this.currentReadPart = PackPart.Body;
                }
                else if (this.currentReadPart == PackPart.Body)
                {
                    this.buffers.Add(reader.ReadBuffer(this.currentReadLength));
                    this.currentReadLength = PackHeaderBytesLen;
                    this.currentReadPart   = PackPart.Head;
                }
            }
        }
示例#14
0
 public void OnTransportWrite(IKcpSession session, ref WrappedWriter writer, WrappedArgs args)
 {
     byte[] bytes = args.Value as byte[];
     //Console.WriteLine("kcp pipeline写入数据>>" + bytes.Length);
     writer.Write(bytes);
 }
示例#15
0
        public override void OnUdpMessageOutput(IUdpSession session, ref WrappedWriter writer, WrappedArgs args)
        {
            IWrappedMemory memory = args.Value as IWrappedMemory;

            if (memory.Flag == MemoryFlag.Kcp)
            {
                //kcp协议
                writer.Write(k_message);
            }
            else if (memory.Flag == MemoryFlag.Udp)
            {
                //普通udp协议
                writer.Write(c_message);
            }

            writer.Write(memory.GetReadableMemory());
        }
示例#16
0
        public override void OnUdpMessageInput(IUdpSession session, ref WrappedReader reader, WrappedArgs args)
        {
            //消息类型
            var messageType = reader.ReadInt32();
            var buffer      = reader.ReadBuffer((int)reader.Length);
            //频道号
            var convSpan = buffer.Slice(buffer.Start, 4).First.Span;
            var conv     = base.OrderOperators.ReadUInt32(convSpan);

            if (!this.sessions.ContainsKey(conv))
            {
                return;
            }

            var kcpSession = this.sessions[conv];

            if (messageType == k_message)
            {
                base.SendKcpMessageTo(kcpSession, ref buffer);
            }
            else if (messageType == c_message)
            {
                base.SendUdpMessageTo(kcpSession, ref buffer);
            }
        }
示例#17
0
 public void OnTransportWrite(ITcpSession session, ref WrappedWriter writer, WrappedArgs args)
 {
 }
示例#18
0
 public abstract void OnUdpMessageOutput(IUdpSession session, ref WrappedWriter writer, WrappedArgs args);
示例#19
0
 public abstract void OnUdpMessageInput(IUdpSession session, ref WrappedReader reader, WrappedArgs args);
示例#20
0
 public void OnTransportWrite(ITcpSession session, ref WrappedWriter writer, WrappedArgs args)
 {
     // Console.WriteLine($"{nameof(TcpTestFilter_Client)}.{nameof(OnTransportWrite)}");
 }