QuickFixN имеет событие отключения сеанса, которое не вызывает OnLogout

В журнале событий QF есть события сеансового уровня:

20180418-13:30:51.268 : Connection failed: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond #.#.#.#:#
20180418-13:31:00.288 : Connecting to #.#.#.# on port #
20180418-13:31:21.293 : Connection failed: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond #.#.#.#:#
20180418-13:31:00.288 : Connecting to #.#.#.# on port #

Какой обработчик событий использовать для сообщения/реагирования на эти события? Обработчик OnLogout не вызывается.

Я не хочу использовать FromEarlyIntercept, который, я думаю, перехватит событие?


person rupweb    schedule 18.04.2018    source источник


Ответы (1)


Такое поведение является преднамеренным — соединение не установлено, вход в систему не выполнен, поэтому нет события OnLogout после сбоя сети при подключении. Вы можете увидеть исходный код этой части — FromEarlyIntercept в этом случае также не срабатывает. QuickFix/n просто зарегистрирует ошибку и попытается повторно подключиться через ReconnectInterval секунд.

try
        {
            t.Connect();
            t.Initiator.SetConnected(t.Session.SessionID);
            t.Session.Log.OnEvent("Connection succeeded");
            t.Session.Next();
            while (t.Read())
            { }
            if (t.Initiator.IsStopped)
                t.Initiator.RemoveThread(t);
            t.Initiator.SetDisconnected(t.Session.SessionID);
        }
        catch (IOException ex) // Can be exception when connecting, during ssl authentication or when reading
        {
            t.Session.Log.OnEvent("Connection failed: " + ex.Message);
        }
        catch (SocketException e) 
        {
            t.Session.Log.OnEvent("Connection failed: " + e.Message);
        }
person Pavel    schedule 07.02.2019