void IApplication.ToApp(FixMessage message, SessionID sessionId)
        {
            if (_Log.IsTraceEnabled)
            {
                _Log.Trace().PrintFormat("[{0}] >-> {1}", sessionId, message.PrettyPrint().Preformatted());
            }

            var seqNumber = message.Header.GetInt(34 /* MsgSeqNum */);

            switch (message)
            {
            case NewOrderSingle msg:
                // Запоминаем связку (N сообщения, ID транзакции)
                _newOrderTransactions.RememberSeqNumber(seqNumber, msg.ClOrdID.Obj);
                break;

            case OrderCancelRequest msg:
                // Запоминаем связку (N сообщения, ID транзакции)
                _killOrderTransactions.RememberSeqNumber(seqNumber, msg.ClOrdID.Obj);
                break;

            case OrderCancelReplaceRequest msg:
                // Запоминаем связку (N сообщения, ID транзакции)
                _modifyOrderTransactions.RememberSeqNumber(seqNumber, msg.ClOrdID.Obj);
                break;
            }
        }
        void IApplication.FromApp(FixMessage message, SessionID sessionId)
        {
            if (_Log.IsTraceEnabled)
            {
                _Log.Trace().PrintFormat("[{0}] <-< {1}", sessionId, message.PrettyPrint().Preformatted());
            }

            switch (message)
            {
            case Reject msg:
                Handle(msg);
                break;

            case ExecutionReport msg:
                Handle(msg);
                break;

            case OrderCancelReject msg:
                Handle(msg);
                break;

            default:
                _Log.Warn().PrintFormat("Unexpected message: {0}", message.GetType().Name);
                break;
            }
        }
 void IApplication.FromAdmin(FixMessage message, SessionID sessionId)
 {
     if (_Log.IsTraceEnabled)
     {
         _Log.Trace().PrintFormat("[{0}] <=< {1}", sessionId, message.PrettyPrint().Preformatted());
     }
 }