private void Logon()
        {
            SocketLogonArgs logonArgs = new SocketLogonArgs();

            logonArgs.IPAddress = IPAddress.Parse("127.0.0.1");
            logonArgs.Port      = 9050;
            engineConnect.Logon(logonArgs);

            Assert.IsTrue(engineConnect.IsConnected, "Engine(Connect).IsConnected");
            Assert.IsTrue(engineListen.IsConnected, "Engine(Listen).IsConnected");
        }
        public void ResendTest()
        {
            Assert.AreEqual(engineConnect.MsgSeqNumIn, engineListen.MsgSeqNumOut, "MsgSeqNumIn=MsgSeqNumOut Before");

            engineListen.ResetMsgSeqNumOut(engineListen.MsgSeqNumOut + 10);

            SocketLogonArgs logonArgs = new SocketLogonArgs();

            logonArgs.IPAddress = IPAddress.Parse("127.0.0.1");
            logonArgs.Port      = 9050;
            engineConnect.Logon(logonArgs);

            Assert.IsTrue(engineConnect.IsConnected, "Engine(Connect).IsConnected");

            DateTime timeout = DateTime.Now.AddSeconds(5);

            while (engineConnect.MsgSeqNumIn != engineListen.MsgSeqNumOut && DateTime.Now <= timeout)
            {
                Thread.Sleep(10);
            }

            Assert.AreEqual(engineConnect.MsgSeqNumIn, engineListen.MsgSeqNumOut, "MsgSeqNumIn=MsgSeqNumOut After");
        }
Exemple #3
0
        static void Main(string[] args)
        {
            log.Debug("--> Main");

            try
            {
                SocketLogonArgs logonArgs = new SocketLogonArgs();
                logonArgs.IPAddress = IPAddress.Parse(ConfigurationManager.AppSettings["Host"]);
                logonArgs.Port      = int.Parse(ConfigurationManager.AppSettings["Port"]);

                //set additional logon tags
                FIX4NET.FieldCollection fieldsLogon = (FIX4NET.FieldCollection)ConfigurationManager.GetSection("fixLogonFieldsSection");
                if (fieldsLogon != null)
                {
                    foreach (IField field in fieldsLogon)
                    {
                        logonArgs.AddField(field);
                    }
                }

                MessageFactoryFIX factory = new MessageFactoryFIX(ConfigurationManager.AppSettings["BeginString"]);
                //IMessageFactory factory = new FIX_4_4.MessageFactoryFIX();
                //IMessageFactory factory = new FIX_4_2.MessageFactoryFIX();
                _factory = factory;

                //additional tags for factory to append on every message
                FIX4NET.FieldCollection fields = (FIX4NET.FieldCollection)ConfigurationManager.GetSection("fixMessageFieldsSection");
                if (fields != null)
                {
                    foreach (FIX4NET.IField field in fields)
                    {
                        factory.AddField(field);
                    }
                }
                //create instance of FIX engine
                SocketEngine engine = new SocketEngine();

                //set message timeout
                string messageTimeout = ConfigurationManager.AppSettings["MessageTimeout"];
                if (!string.IsNullOrEmpty(messageTimeout))
                {
                    engine.MessageTimeout = int.Parse(messageTimeout);
                }

                //initialize FIX engine
                _engine = engine;
                _engine.MessageCacheFactory = new MessageCacheFlatFileFactory();
                _engine.MessageFactory      = factory;
                _engine.Initialize(
                    ConfigurationManager.AppSettings["SenderCompID"], ConfigurationManager.AppSettings["SenderSubID"],
                    ConfigurationManager.AppSettings["TargetCompID"], ConfigurationManager.AppSettings["TargetSubID"]);
                _engine.AllowOfflineSend = true;

                _engine.Received += new MessageEventHandler(engine_Received);
                _engine.Sent     += new MessageEventHandler(engine_Sent);

                //reset MsgSeqNum(Out)
                string resetMsgSeqNumOut = ConfigurationManager.AppSettings["ResetMsgSeqNumOut"];
                if (!string.IsNullOrEmpty(resetMsgSeqNumOut))
                {
                    _engine.ResetMsgSeqNumOut(int.Parse(resetMsgSeqNumOut));
                }

                //reset MsgSeqNum(In)
                string resetMsgSeqNumIn = ConfigurationManager.AppSettings["ResetMsgSeqNumIn"];
                if (!string.IsNullOrEmpty(resetMsgSeqNumIn))
                {
                    _engine.ResetMsgSeqNumIn(int.Parse(resetMsgSeqNumIn));
                }

                _engine.Logon(logonArgs);
                if (!_engine.IsConnected)
                {
                    throw new Exception("Logong failed");
                }

                Console.WriteLine("press <Enter> to continue...");
                Console.ReadLine();

                string sendMessageFromFile = ConfigurationManager.AppSettings["SendMessagesFromFile"];
                if (!string.IsNullOrEmpty(sendMessageFromFile))
                {
                    SendMessagesFromFile(sendMessageFromFile);
                }

                Console.WriteLine("press <Enter> to exit...");
                Console.ReadLine();

                _engine.Logout("USER LOGOUT REQUESTED");
                _engine.Dispose();
            }
            catch (Exception ex)
            {
                log.Error("Error running FIX test", ex);
            }

            log.Debug("<-- Main");
        }