private MessageCacheFlatFile Create() { MessageFactoryFIX factory = new MessageFactoryFIX("FIX.4.2"); MessageCacheFlatFile cache = new MessageCacheFlatFile(); cache.Initialize(factory); cache.Path = _path; cache.Open("TEST", null, "TEST", null, DateTime.MinValue); return(cache); }
public void Run() { if (log.IsDebugEnabled) { log.Debug("Run"); } MessageCacheFlatFile messageCache = new MessageCacheFlatFile(); messageCache.Initialize(new MessageFactoryFIX()); messageCache.Open(SenderCompID, SenderSubID, TargetCompID, TargetSubID, ProcessingDate, false); IMessage message = null; if (log.IsDebugEnabled) { log.Debug("Run - Replay message In"); } for (int i = 1; i <= messageCache.MsgSeqNumIn; i++) { message = messageCache[MessageDirection.In, i]; if (message != null && message.MsgSeqNum != i) { throw new Exception(string.Format("MsgSeqNum={0} did not match / Expected={1}", message.MsgSeqNum, i)); } } if (log.IsDebugEnabled) { log.Debug("Run - Replay message Out"); } for (int i = 1; i <= messageCache.MsgSeqNumOut; i++) { message = messageCache[MessageDirection.Out, i]; if (message != null && message.MsgSeqNum != i) { throw new Exception(string.Format("MsgSeqNum={0} did not match / Expected={1}", message.MsgSeqNum, i)); } } }
static void Main(string[] args) { log.Debug("--> Main"); const string SENDER_COMP_ID = "SENDER"; const string TARGET_COMP_ID = "TARGET"; IMessage message; int i; try { IMessageFactory factory = new FIX_4_2.MessageFactoryFIX(); IMessageCache cache = new MessageCacheFlatFile(); cache.Initialize(factory); cache.Open(SENDER_COMP_ID, null, TARGET_COMP_ID, null); //Add 1000 messages in cache Console.WriteLine("Appending 1000 In messages"); for (i = 1; i <= 1000; i++) { message = factory.CreateInstanceHeartbeat(); message.Direction = MessageDirection.In; message.SenderCompID = SENDER_COMP_ID; message.TargetCompID = TARGET_COMP_ID; message.SendingTime = DateTime.Now; message.MsgSeqNum = cache.MsgSeqNumIn + 1; factory.Build(message); cache.AddMessage(message); } Console.WriteLine("MsgSeqNumIn / {0}", cache.MsgSeqNumIn); //Reset MsgSeqNum In to 100 Console.WriteLine("ResetMsgSeqNumIn to 100"); cache.ResetMsgSeqNumIn(100); Console.WriteLine("MsgSeqNumIn (Expected 99) / {0}", cache.MsgSeqNumIn); //Close and Open file to check MsgSeqNum Console.WriteLine("Close/Open file"); cache.Close(); cache.Open(SENDER_COMP_ID, null, TARGET_COMP_ID, null); Console.WriteLine("MsgSeqNumIn (Expected 99) / {0}", cache.MsgSeqNumIn); //Reset MsgSeqNum In to 1000 Console.WriteLine("ResetMsgSeqNumIn to 1000"); cache.ResetMsgSeqNumIn(1000); Console.WriteLine("MsgSeqNumIn (Expected 999) / {0}", cache.MsgSeqNumIn); //Close and Open file to check MsgSeqNum Console.WriteLine("Close/Open file"); cache.Close(); cache.Open(SENDER_COMP_ID, null, TARGET_COMP_ID, null); Console.WriteLine("MsgSeqNumIn (Expected 999) / {0}", cache.MsgSeqNumIn); //Add 1000 messages in cache Console.WriteLine("Appending 1000 In messages"); for (i = 1; i <= 1000; i++) { message = factory.CreateInstanceHeartbeat(); message.Direction = MessageDirection.In; message.SenderCompID = SENDER_COMP_ID; message.TargetCompID = TARGET_COMP_ID; message.SendingTime = DateTime.Now; message.MsgSeqNum = cache.MsgSeqNumIn + 1; factory.Build(message); cache.AddMessage(message); } Console.WriteLine("MsgSeqNumIn / {0}", cache.MsgSeqNumIn); //Read Messages from Cache to check MsgSeqNum Console.WriteLine("Reading Cache to check MsgSeqNum"); for (i = 1; i <= cache.MsgSeqNumIn; i++) { message = cache[MessageDirection.In, i]; if (message != null) { if (message.MsgSeqNum != i) { Console.WriteLine("MsgSeqNum did NOT match / MsgSeqNum(Expected)={0} MsgSeqNum(Message)={1}", i, message.MsgSeqNum); } } } Console.WriteLine("Reading Cache to check MsgSeqNum - COMPLETE / i={0}", i); //Close cache cache.Close(); } catch (Exception ex) { log.Error("Error running FIX test", ex); } log.Debug("<-- Main"); Console.WriteLine("press <Enter> to exit..."); Console.ReadLine(); }