Quickfix / J - 我需要调用Session.lookupSession(sessionId).logon();

时间:2013-11-20 17:54:53

标签: quickfix fix-protocol

是否需要调用此行

Session.lookupSession(is).logon();

在此代码中

socketInitiator.start();
            SessionID sessionId = socketInitiator.getSessions().get(0);
            Session.lookupSession(id).logon();
            while (!Session.lookupSession(id).isLoggedOn()) {
                System.out.println("Waiting for login success");
                Thread.sleep(500);
            }

它的目的是什么,因为当我省略它时,它仍然通过while循环获得。

EDIT_的 _ __ _ __ _ __ _ __ _ ___

我在单元测试中使用它

socketInitiator.start();
            SessionID sessionId = socketInitiator.getSessions().get(0);
            Session.lookupSession(id).logon();
            while (!Session.lookupSession(id).isLoggedOn()) {
                System.out.println("Waiting for login success");
                Thread.sleep(500);
            }
        System.out.println("Logged In...booking SingleOrder from session: " + sessionId);


        //check that the party receives the fix message
        assertTrue(isBookSingleOrderReceivedFromFixInbound(sessionId));

1 个答案:

答案 0 :(得分:4)

我不知道该功能是什么,或者为什么它甚至存在。 (我可以查一查,当然,但我只是说我从来没有使用它。)

start()调用应该使启动器开始尝试登录(假设当前时间在定义的会话中)。你甚至不应该有这样的while循环。

您应该致电start(),然后不做任何事情。如果登录成功,您会看到FromAppFromAdmin回调开始被触发传入消息(包括您的登录响应)。