Ejemplo n.º 1
0
        private void _sendtoDb()
        {
            try
            {
                while (_running)
                {
                    try
                    {
                        TODropCopyDB to = null;
#if _CQUEUE
                        lock (_sync)
                        {
                            if (!_queueToDB.TryDequeue(out to))
                            {
                                lock (_queueToDB)
                                    Monitor.Wait(_queueToDB, 50);
                            }
                            if (null != to)
                            {
                                this._processMessage(to);
                                to = null;
                            }
                        }
#else
                        lock (_queueToDB)
                        {
                            if (_queueToDB.Count > 0)
                            {
                                to = _queueToDB.Dequeue();
                            }
                            else
                            {
                                Monitor.Wait(_queueToDB, 5);
                            }
                        }

                        if (null != to)
                        {
                            this._processMessage(to);
                            to = null;
                        }
#endif
                    }
                    catch
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("Erro ao desenfileirar a mensagem: " + ex.Message, ex);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Trata mensagem de rejeição de ordem
 /// </summary>
 /// <param name="message">QuickFix44.Reject message</param>
 /// <param name="session">QuickFix.SessionID session</param>
 public void OnMessage(Reject message, SessionID session)
 {
     try
     {
         TODropCopyDB to = new TODropCopyDB();
         to.MensagemQF = message;
         to.Sessao     = session;
         to.TipoMsg    = MsgType.REJECT;
         this._addMessage(to);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no processamento da mensagem de Reject: " + ex.Message, ex);
     }
 }
Ejemplo n.º 3
0
 public void OnMessage(ExecutionReport er, SessionID s)
 {
     try
     {
         TODropCopyDB to = new TODropCopyDB();
         to.MensagemQF = er;
         to.Sessao     = s;
         to.TipoMsg    = MsgType.EXECUTION_REPORT;
         this._addMessage(to);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no processamento da mensagem de ExecutionReport: " + ex.Message, ex);
     }
 }
Ejemplo n.º 4
0
 public void OnMessage(OrderCancelRequest ocr, SessionID s)
 {
     try
     {
         TODropCopyDB to = new TODropCopyDB();
         to.MensagemQF = ocr;
         to.Sessao     = s;
         to.TipoMsg    = MsgType.ORDER_CANCEL_REQUEST;
         this._addMessage(to);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no processamento da mensagem de OrderCancelRequest: " + ex.Message, ex);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Tratamento do New Order Cross - TODO [FF] - Verificar tratamento do Order Cross
 /// </summary>
 /// <param name="noc"></param>
 /// <param name="s"></param>
 public void OnMessage(NewOrderCross noc, SessionID s)
 {
     try
     {
         TODropCopyDB to = new TODropCopyDB();
         to.MensagemQF = noc;
         to.Sessao     = s;
         to.TipoMsg    = MsgType.NEWORDERCROSS;
         this._addMessage(to);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no processamento da mensagem de NewOrderCross: " + ex.Message, ex);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Tratamento do New Order Single  - Efetuar inserção na tabela Ordem
 /// </summary>
 /// <param name="nos"></param>
 /// <param name="s"></param>
 public void OnMessage(NewOrderSingle nos, SessionID s)
 {
     try
     {
         TODropCopyDB to = new TODropCopyDB();
         to.MensagemQF = nos;
         to.Sessao     = s;
         to.TipoMsg    = MsgType.NEWORDERSINGLE;
         this._addMessage(to);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no processamento da mensagem NewOrderSingle: " + ex.Message, ex);
     }
 }
Ejemplo n.º 7
0
        private void _processMessage(TODropCopyDB to)
        {
            try
            {
                //lock (_sync)
                {
                    switch (to.TipoMsg)
                    {
                    // Requests
                    case MsgType.NEWORDERSINGLE:
                        _rulesMsg.ProcessNewOrderSingle(to.MensagemQF, _config.Bolsa, _config.Operador);
                        break;

                    case MsgType.ORDER_CANCEL_REPLACE_REQUEST:
                        _rulesMsg.ProcessOrderCancelReplaceRequest(to.MensagemQF, _config.Bolsa);
                        break;

                    case MsgType.ORDER_CANCEL_REQUEST:
                        _rulesMsg.ProcessOrderCancelRequest(to.MensagemQF, _config.Bolsa);
                        break;

                    // Responses
                    case MsgType.EXECUTION_REPORT:
                        _rulesMsg.ProcessExecutionReport(to.MensagemQF, _config.Bolsa);
                        break;

                    case MsgType.ORDERCANCELREJECT:
                        _rulesMsg.ProcessOrderCancelReject(to.MensagemQF, _config.Bolsa);
                        break;

                    // Teoricamente nao deve receber mensagens de Reject e BusinessMessageReject, pois gera-se um ExecutionReport de rejeicao
                    case MsgType.REJECT:
                        _rulesMsg.ProcessReject(to.MensagemQF);
                        break;

                    case MsgType.BUSINESSMESSAGEREJECT:
                        _rulesMsg.ProcessBusinessMessageReject(to.MensagemQF);
                        break;
                    }
                    to = null;
                }
            }
            catch (Exception ex)
            {
                logger.Error("Problemas no processamento da mensagem: " + ex.Message, ex);
            }
        }
Ejemplo n.º 8
0
        private void _addMessage(TODropCopyDB msg)
        {
            try
            {
#if _CQUEUE
                _queueToDB.Enqueue(msg);
                lock (_queueToDB)
                    Monitor.Pulse(_queueToDB);
#else
                lock (_queueToDB)
                {
                    _queueToDB.Enqueue(msg);
                    Monitor.Pulse(_queueToDB);
                }
#endif
            }
            catch (Exception ex)
            {
                logger.Error("Problemas na adicao da mensagem para processamento: " + ex.Message, ex);
            }
        }