示例#1
0
        public void Int()
        {
            var pipeline = new BufferPipeline(new BufferPoolCreater().Create(2, 100));
            var reader   = pipeline.Reader;
            var writer   = pipeline.Writer;

            writer.Write(true);
            writer.Write((short)1);
            writer.Write(32);
            writer.Write((long)9999999999);
            writer.Write((ushort)2);
            writer.Write((uint)2);
            writer.Write((ulong)3);
            var dateTime = DateTime.Now;

            writer.Write(dateTime);
            var str = "adssadasdasd萨哈克的哈萨克等你们";

            writer.Write(str);
            writer.Flush();
            reader.Read(writer, (int)reader.Length);
            writer.Flush();
            Assert.True(reader.ReadBool());
            Assert.True(reader.ReadInt16() == 1);
            Assert.True(reader.ReadInt32() == 32);
            Assert.True(reader.ReadInt64() == 9999999999);
            Assert.True(reader.ReadUInt16() == 2);
            Assert.True(reader.ReadUInt32() == 2);
            Assert.True(reader.ReadUInt64() == 3);
            Assert.True(reader.ReadDateTime() == dateTime);
            Assert.True(str == reader.ReadToEnd());
        }
示例#2
0
        public static void Test1()
        {
            Console.WriteLine("memory cpu test.");
            IMessageFramer messageFramer   = new LengthPrefixMessageFramer(new FregataOptions());
            var            bufferPipelinse = new BufferPipeline();

            for (int i = 0; i < 500000; i++)
            {
                messageFramer.FrameData(bufferPipelinse.Writer, new byte[4] {
                    1, 2, 3, 4
                });
            }
            bufferPipelinse.Writer.Flush();
            messageFramer.RegisterMessageArrivedCallback((result) =>
            {
                _dealCount++;
                Task.Factory.StartNew(() =>
                {
                    for (int i = 0; i < result.Length; i++)
                    {
                        Console.Write(result.Buffer.Span[i]);
                    }
                    Console.WriteLine();
                });
            });
            while (messageFramer.CanUnFrameData(bufferPipelinse.Reader))
            {
                messageFramer.UnFrameData(bufferPipelinse.Reader);
            }
            Console.WriteLine("================");
            Console.WriteLine(_dealCount);
        }
        public TcpConnection(string name, Socket socket, FregataOptions fregataOptions, IBufferPool receivedBufferPool, IBufferPool sendBufferPool, ITcpConnectionHandler tcpConnectionHandler)
        {
            Id                           = SnowflakeId.Default().NextId();
            Name                         = name;
            Socket                       = socket;
            LocalEndPoint                = socket.LocalEndPoint;
            RemotingEndPoint             = socket.RemoteEndPoint;
            Setting                      = fregataOptions;
            _tcpConnectionEventListeners = new List <ITcpConnectionEventListener>();

            _tcpConnectionHandler = tcpConnectionHandler;

            _messageFramer = new LengthPrefixMessageFramer(Setting);
            _messageFramer.RegisterMessageArrivedCallback(OnMessageArrived);
            _receiveBuufferPipeline = new BufferPipeline(bufferPool: receivedBufferPool, littelEndian: fregataOptions.LittleEndian, coding: fregataOptions.Encode, writerFlushCompleted: null);

            _sendBuufferPipeline = new BufferPipeline(bufferPool: sendBufferPool, littelEndian: fregataOptions.LittleEndian, coding: fregataOptions.Encode, writerFlushCompleted: null);
            Task.Run(() => TryReceiveAsync());
        }
        public void Test()
        {
            IMessageFramer messageFramer   = new LengthPrefixMessageFramer(_fregataOptions);
            var            bufferPipelinse = new BufferPipeline();

            for (int i = 0; i < 10000; i++)
            {
                messageFramer.FrameData(bufferPipelinse.Writer, new byte[4] {
                    1, 2, 3, 4
                });
            }
            bufferPipelinse.Writer.Flush();
            messageFramer.RegisterMessageArrivedCallback((result) =>
            {
                Assert.True(result.Length == 4);
                for (int i = 0; i < result.Length; i++)
                {
                    Assert.True(result.Buffer.Span[i] == i + 1);
                }
            });
            messageFramer.UnFrameData(bufferPipelinse.Reader);
        }