Exemplo n.º 1
0
        public virtual void OnMessage(QuickFix.FIX44.ApplicationMessageRequestAck message, SessionID session)
        {
            try
            {
                string[] quebraApplReqID   = message.ApplReqID.ToString().Split("|".ToCharArray());
                string   applReqID         = quebraApplReqID[0];
                string   sessionIDResponse = quebraApplReqID[1];

                // Retorna o applReqID original
                message.Set(new QuickFix.Fields.ApplReqID(quebraApplReqID[0]));

                // Inverte origem e destino da mensagem, para devolver a resposta ao cliente Fix
                message.Header.SetField(new QuickFix.Fields.SenderCompID(_dctSessionsFixClients[sessionIDResponse].TargetCompID));
                message.Header.SetField(new QuickFix.Fields.SenderSubID(_dctSessionsFixClients[sessionIDResponse].TargetSubID));
                message.Header.SetField(new QuickFix.Fields.TargetCompID(_dctSessionsFixClients[sessionIDResponse].SenderCompID));
                message.Header.SetField(new QuickFix.Fields.TargetSubID(_dctSessionsFixClients[sessionIDResponse].SenderSubID));

                logger.InfoFormat("SessionID[{0}]: ApplicationMessageRequestAck enviando para sessionIDResponse[{1}] msg[{2}]",
                                  session.ToString(), sessionIDResponse, message.ToString());
                bool bRet = Session.SendToTarget(message, _dctSessionsFixClients[sessionIDResponse]);
                if (!bRet)
                {
                    logger.ErrorFormat("SessionID[{0}]: Falha ApplicationMessageRequestAck sessionIDResponse[{1}] msg[{2}]",
                                       session.ToString(), sessionIDResponse, message.ToString());
                }
            }
            catch (Exception ex)
            {
                logger.Error("onMessage(ApplicationMessageRequestAck): " + ex.Message, ex);
            }
        }
Exemplo n.º 2
0
        public virtual void OnMessage(QuickFix.FIX44.ApplicationMessageRequestAck message, SessionID session)
        {
            try
            {
                logger.Info("*** Iniciando recepcao da Retransmissao");
                logger.Info("ApplReqID........: " + message.GetString(QuickFix.Fields.Tags.ApplReqID));
                logger.Info("ApplReqType......: " + message.GetString(QuickFix.Fields.Tags.ApplReqType));
                logger.Info("ApplResponseID...: " + message.GetString(QuickFix.Fields.Tags.ApplRespID));
                logger.Info("ApplResponseType.: " + message.GetString(QuickFix.Fields.Tags.ApplRespType));

                int applRespType = Convert.ToInt32(message.ApplRespType.ToString());

                if (message.IsSetField(QuickFix.Fields.Tags.NoApplIDs))
                {
                    int numApplIDs = message.GetInt(QuickFix.Fields.Tags.NoApplIDs);
                    logger.Info("ApplIDs..........: " + numApplIDs);

                    for (int numApplID = 1; numApplID <= numApplIDs; numApplID++)
                    {
                        QuickFix.FIX44.ApplicationMessageRequestAck.NoApplIDsGroup groupApplID = new QuickFix.FIX44.ApplicationMessageRequestAck.NoApplIDsGroup();
                        message.GetGroup(numApplID, groupApplID);

                        logger.Info("RefApplID[" + numApplID + "].....:" + groupApplID.GetString(QuickFix.Fields.Tags.RefApplID));
                        int beginSeqNum = 0;
                        int endSeqNum   = 0;
                        if (groupApplID.IsSetField(QuickFix.Fields.Tags.ApplBegSeqNum))
                        {
                            beginSeqNum = groupApplID.GetInt(QuickFix.Fields.Tags.ApplBegSeqNum);
                            logger.Info("ApplBegSeqNum[" + numApplID + "].:" + beginSeqNum);
                        }
                        if (groupApplID.IsSetField(QuickFix.Fields.Tags.ApplEndSeqNum))
                        {
                            endSeqNum = groupApplID.GetInt(QuickFix.Fields.Tags.ApplEndSeqNum);
                            logger.Info("ApplEndSeqNum[" + numApplID + "].:" + endSeqNum);
                        }
                        if (groupApplID.IsSetField(QuickFix.Fields.Tags.ApplRespError))
                        {
                            logger.Info("ApplResponseError[" + numApplID + "].:" + groupApplID.GetString(QuickFix.Fields.Tags.ApplRespError));
                        }

                        // Se applRespType == 3, o server estava ocupado atendendo outra requisicao
                        // reenvia
                        if (applRespType == 3)
                        {
                            SendMessageRequest(beginSeqNum, endSeqNum);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("onMessage(ApplicationMessageRequestAck): " + ex.Message, ex);
            }
        }
Exemplo n.º 3
0
 public virtual void OnMessage(QuickFix.FIX44.ApplicationMessageRequestAck message, SessionID session)
 {
     try
     {
         logger.DebugFormat("ApplicationMessageRequestAck ApplReqID[{0}] msg[{1}]", message.ApplReqID.ToString(), message.ToString());
     }
     catch (Exception ex)
     {
         logger.Error("onMessage(ApplicationMessageRequestAck): " + ex.Message, ex);
     }
 }