Пример #1
0
        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 + ")");
                }
            }
        }
Пример #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);
        }
Пример #3
0
        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);
        }