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); } }
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); } }
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); } }