diff --git a/quickfixj-core/src/main/java/quickfix/mina/SessionConnector.java b/quickfixj-core/src/main/java/quickfix/mina/SessionConnector.java index 77da1aed9..4757b9a12 100644 --- a/quickfixj-core/src/main/java/quickfix/mina/SessionConnector.java +++ b/quickfixj-core/src/main/java/quickfix/mina/SessionConnector.java @@ -195,6 +195,25 @@ public boolean isLoggedOn() { return true; } + /** + * Check if we have at least one session and that at least one session is logged on. + * + * @return false if no sessions exist or all sessions are logged off, true otherwise + */ + //visible for testing only + boolean anyLoggedOn() { + // if no session, not logged on + if (sessions.isEmpty()) + return false; + for (Session session : sessions.values()) { + // at least one session logged on + if (session.isLoggedOn()) + return true; + } + // no sessions are logged on + return false; + } + private Set getLoggedOnSessions() { Set loggedOnSessions = new HashSet<>(sessions.size()); for (Session session : sessions.values()) { @@ -219,7 +238,7 @@ protected void logoutAllSessions(boolean forceDisconnect) { } } - if (isLoggedOn()) { + if (anyLoggedOn()) { if (forceDisconnect) { for (Session session : sessions.values()) { try { diff --git a/quickfixj-core/src/test/java/quickfix/mina/SessionConnectorTest.java b/quickfixj-core/src/test/java/quickfix/mina/SessionConnectorTest.java index 52413ce48..572cccdf1 100644 --- a/quickfixj-core/src/test/java/quickfix/mina/SessionConnectorTest.java +++ b/quickfixj-core/src/test/java/quickfix/mina/SessionConnectorTest.java @@ -129,6 +129,7 @@ public void testOneSessionLoggedOnOneSessionNotLoggedOne() throws Exception { assertNotNull(session2); sessions.put(session2.getSessionID(), session2); assertFalse(connector.isLoggedOn()); + assertTrue(connector.anyLoggedOn()); } /**