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()); }
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); }