/** * Use disconnect(reason, logError) instead. * * @deprecated */ @Deprecated public void disconnect() throws IOException { disconnect("Other reason", true); }
public void disconnect() throws IOException { logInvocation("disconnect"); session.disconnect("JMX admin", false); }
public void disconnect() throws IOException { logInvocation("disconnect"); session.disconnect("JMX admin", false); }
public void disconnect() throws IOException { logInvocation("disconnect"); session.disconnect("JMX admin", false); }
protected void waitForLogout() { long start = System.currentTimeMillis(); Set<Session> loggedOnSessions; while (!(loggedOnSessions = getLoggedOnSessions()).isEmpty()) { try { Thread.sleep(100L); } catch (InterruptedException e) { log.error(e.getMessage(), e); } final long elapsed = System.currentTimeMillis() - start; Iterator<Session> sessionItr = loggedOnSessions.iterator(); while (sessionItr.hasNext()) { Session session = sessionItr.next(); if (elapsed >= session.getLogoutTimeout() * 1000L) { try { session.disconnect("Logout timeout, force disconnect", false); } catch (IOException e) { log.error(e.getMessage(), e); } sessionItr.remove(); } } // Be sure we don't look forever if (elapsed > 60000L) { log.warn("Stopping session logout wait after 1 minute"); break; } } }
private void logoutWithErrorMessage(final String reason) throws IOException { final String errorMessage = "Invalid Logon message: " + (reason != null ? reason : "unspecific reason"); generateLogout(errorMessage); state.incrNextTargetMsgSeqNum(); disconnect(errorMessage, true); }
protected void waitForLogout() { long start = System.currentTimeMillis(); Set<Session> loggedOnSessions; while (!(loggedOnSessions = getLoggedOnSessions()).isEmpty()) { try { Thread.sleep(100L); } catch (InterruptedException e) { log.error(e.getMessage(), e); } final long elapsed = System.currentTimeMillis() - start; Iterator<Session> sessionItr = loggedOnSessions.iterator(); while (sessionItr.hasNext()) { Session session = sessionItr.next(); if (elapsed >= session.getLogoutTimeout() * 1000L) { try { session.disconnect("Logout timeout, force disconnect", false); } catch (IOException e) { log.error(e.getMessage(), e); } sessionItr.remove(); } } // Be sure we don't look forever if (elapsed > 60000L) { log.warn("Stopping session logout wait after 1 minute"); break; } } }
private void logoutWithErrorMessage(final String reason) throws IOException { final String errorMessage = "Invalid Logon message: " + (reason != null ? reason : "unspecific reason"); generateLogout(errorMessage); state.incrNextTargetMsgSeqNum(); disconnect(errorMessage, true); }
private void nextQueued(Message msg, String msgType) throws InvalidMessage, FieldNotFound, RejectLogon, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType, IOException { try { next(msg, true); } catch (final InvalidMessage e) { final String message = "Invalid message: " + e; if (MsgType.LOGON.equals(msgType)) { disconnect(message, true); } else { getLog().onErrorEvent(message); if (resetOrDisconnectIfRequired(null)) { return; } } throw e; } }
@Override public boolean send(String data) { // Check for and disconnect slow consumers. if (maxScheduledWriteRequests > 0 && ioSession.getScheduledWriteMessages() >= maxScheduledWriteRequests) { Session qfjSession = (Session) ioSession.getAttribute(SessionConnector.QF_SESSION); try { qfjSession.disconnect("Slow consumer", true); } catch (IOException e) { } return false; } // The data is written asynchronously in a MINA thread WriteFuture future = ioSession.write(data); if (synchronousWrites) { try { if (!future.awaitUninterruptibly(synchronousWriteTimeout)) { log.error("Synchronous write timed out after {}ms", synchronousWriteTimeout); return false; } } catch (RuntimeException e) { log.error("Synchronous write failed: {}", e.getMessage()); return false; } } return true; }
@Override public boolean send(String data) { // Check for and disconnect slow consumers. if (maxScheduledWriteRequests > 0 && ioSession.getScheduledWriteMessages() >= maxScheduledWriteRequests) { Session qfjSession = (Session) ioSession.getAttribute(SessionConnector.QF_SESSION); try { qfjSession.disconnect("Slow consumer", true); } catch (IOException e) { } return false; } // The data is written asynchronously in a MINA thread WriteFuture future = ioSession.write(data); if (synchronousWrites) { try { if (!future.awaitUninterruptibly(synchronousWriteTimeout)) { log.error("Synchronous write timed out after {}ms", synchronousWriteTimeout); return false; } } catch (RuntimeException e) { log.error("Synchronous write failed: {}", e.getMessage()); return false; } } return true; }
@Override public boolean send(String data) { // Check for and disconnect slow consumers. if (maxScheduledWriteRequests > 0 && ioSession.getScheduledWriteMessages() >= maxScheduledWriteRequests) { Session qfjSession = (Session) ioSession.getAttribute(SessionConnector.QF_SESSION); try { qfjSession.disconnect("Slow consumer", true); } catch (IOException e) { } return false; } // The data is written asynchronously in a MINA thread WriteFuture future = ioSession.write(data); if (synchronousWrites) { try { if (!future.awaitUninterruptibly(synchronousWriteTimeout)) { log.error("Synchronous write timed out after " + synchronousWriteTimeout + "ms"); return false; } } catch (RuntimeException e) { log.error("Synchronous write failed: " + e.getMessage()); return false; } } return true; }
private void nextQueued(Message msg, String msgType) throws InvalidMessage, FieldNotFound, RejectLogon, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType, IOException { try { next(msg, true); } catch (final InvalidMessage e) { final String message = "Invalid message: " + e; if (MsgType.LOGON.equals(msgType)) { disconnect(message, true); } else { getLog().onErrorEvent(message); if (resetOrDisconnectIfRequired(null)) { return; } } throw e; } }
private void nextQueued(Message msg, String msgType) throws InvalidMessage, FieldNotFound, RejectLogon, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType, IOException { try { next(msg, true); } catch (final InvalidMessage e) { final String message = "Invalid message: " + e; if (MsgType.LOGON.equals(msgType)) { disconnect(message, true); } else { getLog().onErrorEvent(message); if (resetOrDisconnectIfRequired(null)) { return; } } throw e; } }
/** * Logs out and disconnects session (if logged on) and then resets session state. * * @throws IOException IO error * @see SessionState#reset() */ public void reset() throws IOException { if (!isResetting.compareAndSet(false, true)) { return; } try { if (hasResponder() && isLoggedOn()) { if (application instanceof ApplicationExtended) { ((ApplicationExtended) application).onBeforeSessionReset(sessionID); } generateLogout(); disconnect("Session reset", false); } resetState(); } finally { isResetting.set(false); } }
private boolean resetOrDisconnectIfRequired(Message msg) { if (!resetOnError && !disconnectOnError) { return false; } if (!isLoggedOn()) { return false; } // do not interfere in admin and logon/logout messages etc. if (msg != null && msg.isAdmin()) { return false; } if (resetOnError) { try { getLog().onErrorEvent("Auto reset"); reset(); } catch (final IOException e) { LOG.error("Failed resetting: {}", e); } return true; } if (disconnectOnError) { try { disconnect("Auto disconnect", false); } catch (final IOException e) { LOG.error("Failed disconnecting: {}", e); } return true; } return false; }
/** * Logs out and disconnects session (if logged on) and then resets session state. * * @throws IOException IO error * @see SessionState#reset() */ public void reset() throws IOException { if (!isResetting.compareAndSet(false, true)) { return; } try { if (hasResponder() && isLoggedOn()) { if (application instanceof ApplicationExtended) { ((ApplicationExtended) application).onBeforeSessionReset(sessionID); } generateLogout(); disconnect("Session reset", false); } resetState(); } finally { isResetting.set(false); } }
/** * Logs out and disconnects session (if logged on) and then resets session state. * * @throws IOException IO error * @see SessionState#reset() */ public void reset() throws IOException { if (!isResetting.compareAndSet(false, true)) { return; } try { if (hasResponder() && isLoggedOn()) { if (application instanceof ApplicationExtended) { ((ApplicationExtended) application).onBeforeSessionReset(sessionID); } generateLogout(); disconnect("Session reset", false); } resetState(); } finally { isResetting.set(false); } }
protected void logoutAllSessions(boolean forceDisconnect) { log.info("Logging out all sessions"); if (sessions == null) { log.error("Attempt to logout all sessions before initialization is complete."); return; } for (Session session : sessions.values()) { try { session.logout(); } catch (Throwable e) { logError(session.getSessionID(), null, "Error during logout", e); } } if (anyLoggedOn()) { if (forceDisconnect) { for (Session session : sessions.values()) { try { if (session.isLoggedOn()) { session.disconnect("Forcibly disconnecting session", false); } } catch (Throwable e) { logError(session.getSessionID(), null, "Error during disconnect", e); } } } else { waitForLogout(); } } }
private void nextLogout(Message logout) throws IOException, RejectLogon, FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType { if (!verify(logout, false, false)) { return; } state.setLogoutReceived(true); String msg; if (!state.isLogoutSent()) { msg = "Received logout request"; if (logout.isSetField(Text.FIELD)) { msg += ": " + logout.getString(Text.FIELD); } getLog().onEvent(msg); generateLogout(logout); getLog().onEvent("Sent logout response"); } else { msg = "Received logout response"; getLog().onEvent(msg); } // QFJ-750 if (getExpectedTargetNum() == logout.getHeader().getInt(MsgSeqNum.FIELD)) { state.incrNextTargetMsgSeqNum(); } if (resetOnLogout) { resetState(); } disconnect(msg, false); }