/// <summary> /// /// </summary> /// <param name="reject"></param> /// <param name="sessionId"></param> private void OnMessage(QuickFix.FIX44.Reject reject, SessionID sessionId) { try { // SessionRejectReason (373) // 0 = Invalid tag number // 1 = Required tag missing // 2 = Tag not defined for this message type // 3 = Undefined Tag // 4 = Tag specified without a value // 5 = Value is incorrect (out of range) for this tag // 6 = Incorrect data format for value // 7 = Decryption problem // 8 = Signature problem // 9 = CompID problem // 10 = SendingTime (52) accuracy problem // 11 = Invalid MsgType (35) // (Note other session-level rule violations may exist in which case SessionRejectReason (373) is not specified) if (Logger.IsInfoEnabled) { Logger.Info( "Message rejected at business level : " + reject.GetField(58).ToString(CultureInfo.InvariantCulture), _type.FullName, "OnMessage"); } } catch (Exception exception) { Logger.Error(exception.ToString(), _type.FullName, "OnMessage"); } }
public virtual void OnMessage(QuickFix.FIX44.Reject message, SessionID session) { try { string sessionRejectReason = message.IsSetSessionRejectReason() ? message.SessionRejectReason.ToString() : "0"; string refSeqNum = message.IsSetRefSeqNum() ? message.RefSeqNum.ToString() : "no-ref-seq-num"; string refTagID = message.IsSetRefTagID() ? message.RefTagID.ToString() : "no-tag-id"; string refMsgType = message.IsSetRefMsgType() ? message.RefMsgType.ToString() : "no-ref-msg-type"; string text = message.IsSetText() ? message.Text.ToString() : "no-text"; logger.Error("onMessage(Reject): onMessage(Reject) SessionID: " + session.ToString()); logger.Error("onMessage(Reject): Reason =[" + sessionRejectReason + "]"); logger.Error("onMessage(Reject): RefSeqNum=[" + refSeqNum + "]"); logger.Error("onMessage(Reject): RefTagID=[" + refTagID + "]"); logger.Error("onMessage(Reject): RefMsgType=[" + refMsgType + "]"); logger.Error("onMessage(Reject): Error=[" + text + "]"); } catch (QuickFix.UnsupportedMessageType uex) { logger.Error("onMessage(Reject): " + uex.Message + "\r\n Data: " + uex.Data, uex); } catch (Exception ex) { logger.Error("onMessage(Reject): " + ex.Message, ex); } }
////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// #region "FIX42 Conversions to Fix44" /* * public static QuickFix.FIX44.SequenceReset Fix42SR_2_Fix44SR(QuickFix.FIX42.SequenceReset sr42) * { * try * { * QuickFix.FIX44.SequenceReset sr44 = new QuickFix.FIX44.SequenceReset(); * _fix42Header_2_Fix44Header(sr42.Header, sr44.Header); * * if (sr42.IsSetNewSeqNo()) sr44.Set(new NewSeqNo(sr42.NewSeqNo.getValue())); * if (sr42.IsSetGapFillFlag()) sr44.Set(new GapFillFlag(sr42.GapFillFlag.getValue())); * return sr44; * } * catch (Exception ex) * { * logger.Error("Fix42SR_2_Fix44SR(): Problemas na conversao da mensagem SR: " + ex.Message, ex); * return null; * } * } */ public static void Generate44RejectMessage(QuickFix.Message msg, SessionID s, string msgType, Exception ex, SessionAcceptor ssAcceptor, string msgText) { try { if (null != ex) { string aux = string.Format("QuickFix44 MsgType: [{0}], Message: [{1}]", msgType, ex.Message); logger.Error(aux, ex); } QuickFix.FIX44.Reject rej = new QuickFix.FIX44.Reject(); rej.Set(new RefMsgType(msgType)); rej.Set(new RefSeqNum(msg.Header.GetInt(Tags.MsgSeqNum))); if (string.IsNullOrEmpty(msgText)) { rej.Set(new Text("System unavaliable")); // Mensagem generica para nao expor possiveis erros de aplicacao } else { rej.Set(new Text(msgText)); } if (msgType.Equals(MsgType.ORDER_CANCEL_REQUEST) || msgType.Equals(MsgType.ORDER_CANCEL_REPLACE_REQUEST)) { QuickFix.FIX44.OrderCancelReject ocr = Fix44Translator.Fix44Reject2OrderCancelReject(rej, msg); Session.SendToTarget(ocr, s); if (null != ssAcceptor) { ssAcceptor.Send2DropCopy(ocr); } } else { QuickFix.FIX44.ExecutionReport er = Fix44Translator.Fix44Rejection2ExecutionReport(rej, msg); Session.SendToTarget(er, s); if (null != ssAcceptor) { ssAcceptor.Send2DropCopy(er); } } } catch (Exception exC) { logger.Error("Problemas na geracao de mensagem de reject (tratamento de excecoes) de mensagem fix 4.2: " + exC.Message, exC); } }