public void Handle(IMessage message) { var type = message.GetType(); Log.Trace("Message " + message.MsgId + " (Type " + type.Name + ") to be sent over TCP."); if (TcpConnection == null) { Log.Debug("TCP connection not yet established - Message " + message.MsgId + " (Type " + type.Name + ") will be discarded."); return; } foreach (var conn in TcpConnection) { try { var data = _messageSerializer.ToBytes(message); var framed = Framer.FrameData(data); conn.EnqueueSend(framed); } catch (Exception ex) { Log.ErrorException(ex, "Exception caught while handling Message " + message.MsgId + " (Type " + type.Name + ")"); } } }
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 void Handle(Message message) { Type type = MessageHierarchy.GetMsgType(message.MsgTypeId); Log.Trace("Message " + message.MsgId + " (Type " + type.Name + ") to be sent over TCP."); if (TcpConnection == null) { Log.Debug("TCP connection not yet established - Message " + message.MsgId + " (Type " + type.Name + ") will be discarded."); return; } try { var framed = Framer.FrameData((new TcpMessage(message).AsArraySegment())); TcpConnection.EnqueueSend(framed); } catch (Exception ex) { Log.ErrorException(ex, "Exception caught while handling Message " + message.MsgId + " (Type " + type.Name + ")"); } }
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); }