/// <summary>
        /// Sends Locate Response to OEE
        /// </summary>
        /// <param name="locateResponse">TradeHub LocateResponse for the Locate Message</param>
        public bool SendLocateResponse(LocateResponse locateResponse)
        {
            try
            {
                if (_asyncClassLogger.IsDebugEnabled)
                {
                    _asyncClassLogger.Debug("New locate response received: " + locateResponse, _type.FullName, "SendLocateResponse");
                }

                // Check if OEE-Client is connected to OEE
                if (_isConnected)
                {
                    // Send Locate Response to OEE-Server
                    _executionEngineClient.SendLocateResponse(locateResponse);
                    return(true);
                }

                if (_asyncClassLogger.IsDebugEnabled)
                {
                    _asyncClassLogger.Debug("Request not sent to OEE as OEE-Client is not connected.", _type.FullName, "SendLocateResponse");
                }
                return(false);
            }
            catch (Exception exception)
            {
                _asyncClassLogger.Error(exception, _type.FullName, "SendLocateResponse");
                return(false);
            }
        }
Esempio n. 2
0
        public void LocateMessageTestCase()
        {
            bool logonArrived  = false;
            bool logoutArrived = false;
            bool connected     = false;
            bool locateArrived = false;

            ManualResetEvent manualLogonEvent     = new ManualResetEvent(false);
            ManualResetEvent manualLogoutEvent    = new ManualResetEvent(false);
            ManualResetEvent manualConnectedEvent = new ManualResetEvent(false);
            ManualResetEvent manualLocateEvent    = new ManualResetEvent(false);

            _executionEngineClient.ServerConnected += delegate()
            {
                connected = true;
                _executionEngineClient.SendLoginRequest(new Login()
                {
                    OrderExecutionProvider = TradeHubConstants.OrderExecutionProvider.Simulated
                });
                manualConnectedEvent.Set();
            };

            _executionEngineClient.LogonArrived +=
                delegate(string obj)
            {
                logonArrived = true;
                manualLogonEvent.Set();
            };

            _executionEngineClient.LocateMessageArrived +=
                delegate(LimitOrder obj)
            {
                locateArrived = true;

                LocateResponse locateResponse = new LocateResponse(obj.OrderID, TradeHubConstants.OrderExecutionProvider.Simulated, true);

                _executionEngineClient.SendLocateResponse(locateResponse);
                _executionEngineClient.SendLogoutRequest(new Logout {
                    OrderExecutionProvider = TradeHubConstants.OrderExecutionProvider.Simulated
                });
                manualLocateEvent.Set();
            };

            _executionEngineClient.LogoutArrived +=
                delegate(string obj)
            {
                logoutArrived = true;
                manualLogoutEvent.Set();
            };

            _executionEngineClient.Start();

            manualConnectedEvent.WaitOne(30000, false);
            manualLogonEvent.WaitOne(30000, false);
            manualLocateEvent.WaitOne(30000, false);
            manualLogoutEvent.WaitOne(30000, false);

            Thread.Sleep(1000);

            Assert.AreEqual(true, logonArrived, "Logon Arrived");
            Assert.AreEqual(true, locateArrived, "Locate Arrived");
            Assert.AreEqual(true, logoutArrived, "Logout Arrived");
        }