/// <summary> /// FIXME /// </summary> /// <returns></returns> protected bool GenerateLogon() { Message logon = msgFactory_.Create(this.SessionID.BeginString, Fields.MsgType.LOGON); logon.SetField(new Fields.EncryptMethod(0)); logon.SetField(new Fields.HeartBtInt(state_.HeartBtInt)); if (this.SessionID.IsFIXT) { logon.SetField(new Fields.DefaultApplVerID("FIXME")); } if (this.RefreshOnLogon) { Refresh(); } if (this.ResetOnLogon) { state_.Reset(); } if (ShouldSendReset()) { logon.SetField(new Fields.ResetSeqNumFlag(true)); } InitializeHeader(logon); state_.LastReceivedTimeTickCount = System.Environment.TickCount; state_.TestRequestCounter = 0; state_.SentLogon = true; return(SendRaw(logon, 0)); }
protected bool GenerateResendRequest(string beginString, int msgSeqNum) { Message resendRequest = msgFactory_.Create(beginString, MsgType.RESEND_REQUEST); Fields.BeginSeqNo beginSeqNo = new Fields.BeginSeqNo(state_.GetNextTargetMsgSeqNum()); Fields.EndSeqNo endSeqNo; if (beginString.CompareTo(FixValues.BeginString.FIX42) >= 0) { endSeqNo = new Fields.EndSeqNo(0); } else if (beginString.CompareTo(FixValues.BeginString.FIX41) <= 0) { endSeqNo = new Fields.EndSeqNo(999999); } else { endSeqNo = new Fields.EndSeqNo(msgSeqNum - 1); } resendRequest.SetField(beginSeqNo); resendRequest.SetField(endSeqNo); InitializeHeader(resendRequest); if (SendRaw(resendRequest, 0)) { this.Log.OnEvent("Sent ResendRequest FROM: " + beginSeqNo.Obj + " TO: " + endSeqNo.Obj); state_.SetResendRange(beginSeqNo.Obj, msgSeqNum - 1); return(true); } else { this.Log.OnEvent("Error sending ResendRequest (" + beginSeqNo.Obj + " ," + endSeqNo.Obj + ")"); return(false); } }
public void ToAdmin(Message msg, SessionID sessionID) { var msgType = msg.Header.GetString(Tags.MsgType); Console.WriteLine("ToAdmin: " + msgType); if (msgType == "A") { var settings = this.settings; msg.SetField(new Username(settings.Account), true); msg.SetField(new Password(settings.Password), true); } }
/// <summary> /// Called when admin messages are sent from the application. /// </summary> /// <param name="message">The message.</param> /// <param name="sessionId">The session id.</param> public void ToAdmin(Message message, SessionID sessionId) { if (message is Logon) { message.SetField(new Username(this.credentials.Username)); message.SetField(new Password(this.credentials.Password)); this.Logger.LogDebug(LogId.Network, "Authorizing session..."); } if (this.sendAccountTag) { message.SetField(this.accountField); } }
private void GenerateSequenceReset(int beginSeqNo, int endSeqNo) { string beginString = this.SessionID.BeginString; Message sequenceReset = msgFactory_.Create(beginString, Fields.MsgType.SEQUENCE_RESET); InitializeHeader(sequenceReset); int newSeqNo = endSeqNo; sequenceReset.Header.SetField(new PossDupFlag(true)); InsertOrigSendingTime(sequenceReset.Header, sequenceReset.Header.GetDateTime(Tags.SendingTime)); sequenceReset.Header.SetField(new MsgSeqNum(beginSeqNo)); sequenceReset.SetField(new NewSeqNo(newSeqNo)); sequenceReset.SetField(new GapFillFlag(true)); SendRaw(sequenceReset, beginSeqNo); this.Log.OnEvent("Sent SequenceReset TO: " + newSeqNo); }
public bool GenerateTestRequest(string id) { Message testRequest = msgFactory_.Create(this.SessionID.BeginString, Fields.MsgType.TEST_REQUEST); InitializeHeader(testRequest); testRequest.SetField(new Fields.TestReqID(id)); return(SendRaw(testRequest, 0)); }
/// <summary> /// FIXME don't do so much operator new here /// </summary> /// <param name="heartBtInt"></param> /// <returns></returns> protected bool GenerateLogon(int heartBtInt) { Message logon = msgFactory_.Create(this.SessionID.BeginString, Fields.MsgType.LOGON); logon.SetField(new Fields.EncryptMethod(0)); if (this.SessionID.IsFIXT) { logon.SetField(new Fields.DefaultApplVerID("FIXME")); } if (state_.ReceivedReset) { logon.SetField(new Fields.ResetSeqNumFlag(true)); } logon.SetField(new Fields.HeartBtInt(heartBtInt)); InitializeHeader(logon); state_.SentLogon = SendRaw(logon, 0); return(state_.SentLogon); }
protected void PopulateSessionRejectReason(Message reject, int field, string text, bool includeFieldInfo) { if (this.SessionID.BeginString.CompareTo(FixValues.BeginString.FIX42) >= 0) { reject.SetField(new Fields.RefTagID(field)); reject.SetField(new Fields.Text(text)); } else { if (includeFieldInfo) { reject.SetField(new Fields.Text(text + " (" + field + ")")); } else { reject.SetField(new Fields.Text(text)); } } }
public bool GenerateLogout(string text) { Message logout = msgFactory_.Create(this.SessionID.BeginString, Fields.MsgType.LOGOUT); InitializeHeader(logout); if (text.Length > 0) { logout.SetField(new Fields.Text(text)); } state_.SentLogout = SendRaw(logout, 0); return(state_.SentLogout); }
public bool GenerateHeartbeat(Message testRequest) { Message heartbeat = msgFactory_.Create(this.SessionID.BeginString, Fields.MsgType.HEARTBEAT); InitializeHeader(heartbeat); try { heartbeat.SetField(new Fields.TestReqID(testRequest.GetField(Fields.Tags.TestReqID))); } catch (FieldNotFoundException) { } return(SendRaw(heartbeat, 0)); }
/// <summary> /// Called before messages are sent from the application. /// </summary> /// <param name="message">The message.</param> /// <param name="sessionId">The session identifier.</param> /// <exception cref="DoNotSend">If possible duplication flag is true.</exception> public void ToApp(Message message, SessionID sessionId) { if (this.sendAccountTag) { message.SetField(this.accountField); } var possibleDuplication = false; if (message.Header.IsSetField(Tags.PossDupFlag)) { possibleDuplication = QuickFix.Fields.Converters.BoolConverter.Convert( message.Header.GetField(Tags.PossDupFlag)); } if (possibleDuplication) { throw new DoNotSend(); } }
private void _sendMessageBBGIntegration(string msgType, QuickFix.Message msgQF, TOMessage to, int account) { try { this.Send2DropCopy(msgQF); // Envio de mensagem 4.4 para a sessao drop copy // Validar se deve efetuar o cast da conta para mnemonico if (this.Config.ParseAccount) { string mnemonic = this.ParentAcceptor.GetMnemonicFromAccount(account); if (!string.IsNullOrEmpty(mnemonic)) { msgQF.SetField(new Account(mnemonic), true); } } QuickFix.Message msgQF42 = null; if (msgType == MsgType.EXECUTION_REPORT) { msgQF42 = Fix42TranslatorBBG.Fix44ER_2_Fix42ER((QuickFix.FIX44.ExecutionReport)msgQF); } if (msgType == MsgType.ORDER_CANCEL_REJECT) { msgQF42 = Fix42TranslatorBBG.Fix44OCR_2_Fix42OCR((QuickFix.FIX44.OrderCancelReject)msgQF); } Session.SendToTarget(msgQF42, to.Sessao); msgQF.Clear(); msgQF = null; if (null != msgQF42) { msgQF42.Clear(); } msgQF42 = null; } catch (Exception ex) { logger.Error("Problemas no envio de mensagem de integração BBG: " + ex.Message, ex); } }
private void _sendDefaultMessageIntegration(QuickFix.Message msgQF, TOMessage to, int account) { try { this.Send2DropCopy(msgQF); // Validar se deve efetuar o cast da conta para mnemonico if (this.Config.ParseAccount) { string mnemonic = this.ParentAcceptor.GetMnemonicFromAccount(account); if (!string.IsNullOrEmpty(mnemonic)) { msgQF.SetField(new Account(mnemonic), true); } } Session.SendToTarget(msgQF, to.Sessao); msgQF.Clear(); msgQF = null; } catch (Exception ex) { logger.Error("Problemas no envio da mensagem de integracao default: " + ex.Message, ex); } }
protected void PopulateRejectReason(Message reject, string text) { reject.SetField(new Fields.Text(text)); }
public bool GenerateReject(Message message, FixValues.SessionRejectReason reason, int field) { string beginString = this.SessionID.BeginString; Message reject = msgFactory_.Create(beginString, Fields.MsgType.REJECT); reject.ReverseRoute(message.Header); InitializeHeader(reject); string msgType; if (message.Header.IsSetField(Fields.Tags.MsgType)) { msgType = message.Header.GetField(Fields.Tags.MsgType); } else { msgType = ""; } int msgSeqNum = 0; if (message.Header.IsSetField(Fields.Tags.MsgSeqNum)) { try { msgSeqNum = message.Header.GetInt(Fields.Tags.MsgSeqNum); reject.SetField(new Fields.RefSeqNum(msgSeqNum)); } catch (System.Exception) { } } if (beginString.CompareTo(FixValues.BeginString.FIX42) >= 0) { if (msgType.Length > 0) { reject.SetField(new Fields.RefMsgType(msgType)); } if ((FixValues.BeginString.FIX42.Equals(beginString) && reason.Value <= FixValues.SessionRejectReason.INVALID_MSGTYPE.Value) || (beginString.CompareTo(FixValues.BeginString.FIX42) > 0)) { reject.SetField(new Fields.SessionRejectReason(reason.Value)); } } if (!MsgType.LOGON.Equals(msgType) && !MsgType.SEQUENCE_RESET.Equals(msgType) && (msgSeqNum == state_.GetNextTargetMsgSeqNum())) { state_.IncrNextTargetMsgSeqNum(); } if ((0 != field) || FixValues.SessionRejectReason.INVALID_TAG_NUMBER.Equals(reason)) { if (FixValues.SessionRejectReason.INVALID_MSGTYPE.Equals(reason)) { if (this.SessionID.BeginString.CompareTo(FixValues.BeginString.FIX43) >= 0) { PopulateRejectReason(reject, reason.Description); } else { PopulateSessionRejectReason(reject, field, reason.Description, false); } } else { PopulateSessionRejectReason(reject, field, reason.Description, true); } this.Log.OnEvent("Message " + msgSeqNum + " Rejected: " + reason.Description + " (Field=" + field + ")"); } else { PopulateRejectReason(reject, reason.Description); this.Log.OnEvent("Message " + msgSeqNum + " Rejected: " + reason.Value); } if (!state_.ReceivedLogon) { throw new QuickFIXException("Tried to send a reject while not logged on"); } return(SendRaw(reject, 0)); }
public void ToAdmin(Message message, SessionID sessionID) { if (message.Header.GetField(Tags.MsgType) == MsgType.LOGON) { message.SetField(new QuickFix.Fields.Username("batman")); message.SetField(new QuickFix.Fields.Password("gotham123")); } }
public void ToAdmin(Message msg, SessionID sessionID) { msg.SetField(new StringField(553, AccountUtil.apiKey)); msg.SetField(new StringField(554, AccountUtil.sercretKey)); }
protected void PopulateRejectReason(Message reject, string text) { reject.SetField(new Fields.Text(text)); }
protected void PopulateSessionRejectReason(Message reject, int field, string text, bool includeFieldInfo) { if (this.SessionID.BeginString.CompareTo(FixValues.BeginString.FIX42) >= 0) { reject.SetField(new Fields.RefTagID(field)); reject.SetField(new Fields.Text(text)); } else { if(includeFieldInfo) reject.SetField(new Fields.Text(text + " (" + field + ")")); else reject.SetField(new Fields.Text(text)); } }
public void FromApp(QuickFix.Message msg, SessionID sessionID) { logMe("\r\n \r\n" + "FromApp :" + msg.ToString()); try { if (msg is QuickFix.FIX42.OrderCancelReject) { Console.WriteLine("Order Cancel Reject event raised"); QuickFix.FIX42.OrderCancelReject er = (QuickFix.FIX42.OrderCancelReject)msg; if (er.IsSetClOrdID()) { Console.WriteLine("ClOrdID : " + er.ClOrdID); } if (er.IsSetOrigClOrdID()) { Console.WriteLine("OrigClOrdID : " + er.OrigClOrdID); } if (er.IsSetOrdStatus()) { Console.WriteLine("OrderStatus : " + er.OrdStatus); } if (er.IsSetCxlRejResponseTo()) { Console.WriteLine("CxlRejResponseTo : " + er.CxlRejResponseTo); } if (er.IsSetCxlRejReason()) { Console.WriteLine("CxlRejReason : " + er.CxlRejReason); } if (er.IsSetOrderID()) { Console.WriteLine("OrderID : " + er.OrderID); } if (er.CxlRejResponseTo.getValue() == CxlRejResponseTo.ORDER_CANCEL_REQUEST) { // Order Cancel Rejected reason // 1= UNKNOWN_ORDER, 2 = Broker Option, 3 = Order already in Pending Cancel or Pending Replace status string orderDetails = "CANCEL_REJECTED"; Int32 origOrderID = -1; if (er.IsSetOrigClOrdID()) { origOrderID = Convert.ToInt32(er.OrigClOrdID.getValue()); } Orders o = new Orders(); if (er.IsSetEncodedText()) { orderDetails += " : " + er.EncodedText.getValue(); } o.FIXResponseCanModRejectHandler(Convert.ToInt32(er.ClOrdID.getValue()), er.OrderID.getValue(), origOrderID, er.CxlRejResponseTo.getValue(), "CANCEL_" + getRejectType(er.CxlRejReason), orderDetails); } else if (er.CxlRejResponseTo.getValue() == CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST) { // Order modification Rejected reason // 1 = Broker Option // 3 = Order already in Pending Cancel or Pending Replace status string orderDetails = "MODIFY_REJECTED"; Int32 origOrderID = -1; if (er.IsSetOrigClOrdID()) { origOrderID = Convert.ToInt32(er.OrigClOrdID.getValue()); } Orders o = new Orders(); if (er.IsSetEncodedText()) { orderDetails += " : " + er.EncodedText.getValue(); } o.FIXResponseCanModRejectHandler(Convert.ToInt32(er.ClOrdID.getValue()), er.OrderID.getValue(), origOrderID, er.CxlRejResponseTo.getValue(), "MODIFY_" + getRejectType(er.CxlRejReason), orderDetails); } } else if (msg is QuickFix.FIX42.ExecutionReport) { string ordTypeField = msg.GetField(40); if (ordTypeField == "1") { IField field = new DecimalField(44, 0); msg.SetField(field); } QuickFix.FIX42.ExecutionReport er = (QuickFix.FIX42.ExecutionReport)msg; string orderDetails = Convert.ToString(er.ExecType.getValue()) + "|" + er.OrderQty.getValue() + "|" + er.Price.getValue() + "|" + er.LastShares.getValue() + "|" + er.LastPx.getValue() + "|" + er.CumQty.getValue() + "|" + er.AvgPx.getValue() + "|" + er.OrdType.getValue() + "|"; if (er.IsSetText()) { orderDetails = orderDetails + er.Text + "|"; } else { orderDetails = orderDetails + "NULL|"; } logMe("\r\n \r\n" + "Got execution Report - ExecType = " + orderDetails); Console.WriteLine("\r\n \r\n" + "Got execution Report - ExecType = " + orderDetails); Orders o = new Orders(); if (er.ExecType.getValue() == ExecType.FILL || er.ExecType.getValue() == ExecType.PARTIAL_FILL) { o.FIXResponseHandlerForFill(Convert.ToInt32(er.ClOrdID.getValue()), er.OrderID.getValue(), (float)Convert.ToDouble(er.OrderQty.getValue()), (float)Convert.ToDouble(er.LastPx.getValue()), (float)Convert.ToDouble(er.LastShares.getValue()), getExecType(er.ExecType), er.ExecType.getValue()); } else { Int32 origOrderID = -1; float price = -1; char orderType = '2'; if (er.IsSetOrigClOrdID()) { origOrderID = Convert.ToInt32(er.OrigClOrdID.getValue()); } if (er.IsSetPrice()) { price = (float)Convert.ToDouble(er.Price.getValue()); } if (er.IsSetOrdType()) { orderType = er.OrdType.getValue(); } //orderid is string since value is too large for int variable o.FIXResponseHandler(Convert.ToInt32(er.ClOrdID.getValue()), er.OrderID.getValue(), origOrderID, er.ExecType.getValue(), getExecType(er.ExecType), orderDetails, price, orderType); } } } catch (Exception e) { Console.WriteLine("exception(FixClient FromAPP) " + e.Message); } }