protected void ProcessNewOrder(object param) { try { lock (tLock) { Wrapper wrapper = (Wrapper)param; Order order = OrderConverter.ConvertNewOrder(wrapper); string sender = (string)wrapper.GetField(OrderFields.SENDER); if (!string.IsNullOrEmpty(sender) && TestingModules.ContainsKey(sender)) { SentOrders.Add(order.ClOrdId, sender); QuickFix.Message nos = FIXMessageCreator.CreateNewOrderSingle(order.ClOrdId, order.Security.Symbol, order.Side, order.OrdType, order.SettlType, order.TimeInForce, order.EffectiveTime, order.OrderQty, order.Price, order.StopPx, order.Account, order.Exchange); Session.SendToTarget(nos, SessionID); SendersDict.Add(nos.Header.GetInt(QuickFix.Fields.Tags.MsgSeqNum), sender); KeysDict.Add(nos.Header.GetInt(QuickFix.Fields.Tags.MsgSeqNum), order.ClOrdId); } else { throw new Exception("Cannot create an order for unknown sender"); } } } catch (Exception ex) { DoLog(string.Format("Critical error processing new order @{0}:{1}", Configuration.Name, ex.Message), Fwk.Main.Common.Util.Constants.MessageType.Error); } }
protected void ProcessMessageReject(object param) { try { Reject reject = (Reject)param; int refSeqNum = reject.GetInt(QuickFix.Fields.Tags.RefSeqNum); if (SendersDict.ContainsKey(refSeqNum)) { string sender = SendersDict[refSeqNum]; if (TestingModules.ContainsKey(sender)) { if (KeysDict.ContainsKey(refSeqNum)) { string key = KeysDict[refSeqNum]; RejectWrapper rejectWrapper = new RejectWrapper(key, reject); TestingModules[sender].ProcessMessage(rejectWrapper); } else { DoLog(string.Format("Discarding message because no key was identified @{0}: Sender={1}", Configuration.Name, sender), Fwk.Main.Common.Util.Constants.MessageType.Information); } } else { DoLog(string.Format("Discarding message because no sender was identified @{0}: Sender={1}", Configuration.Name, sender), Fwk.Main.Common.Util.Constants.MessageType.Information); } } else { DoLog(string.Format("Discarding message because no sender was identified @{0}: Message={1}", Configuration.Name, refSeqNum), Fwk.Main.Common.Util.Constants.MessageType.Information); } } catch (Exception ex) { DoLog(string.Format("Critical error processing a Reject message @{0}:{1}", Configuration.Name, ex.Message), Fwk.Main.Common.Util.Constants.MessageType.Error); } }