/** {@inheritDoc} */ @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { log.debug("Filter chain: {}", session.getFilterChain()); String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); if (log.isDebugEnabled()) { log.warn("Exception caught on session: {} id: {}", session.getId(), sessionId, cause); } if (cause instanceof IOException) { // Mina states that the connection will be automatically closed when an IOException is caught log.debug("IOException caught on {}", sessionId); } else { log.debug("Non-IOException caught on {}", sessionId); if (session.containsAttribute("FORCED_CLOSE")) { log.info("Close already forced on this session: {}", session.getId()); } else { // set flag session.setAttribute("FORCED_CLOSE", Boolean.TRUE); //session.suspendRead(); cleanSession(session, true); } } }
/** {@inheritDoc} */ @Override public void sessionOpened(IoSession session) throws Exception { String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); log.debug("Session opened: {} id: {}", session.getId(), sessionId); RTMPConnManager connManager = (RTMPConnManager) RTMPConnManager.getInstance(); session.setAttribute(RTMPConnection.RTMP_CONN_MANAGER, new WeakReference<IConnectionManager<RTMPConnection>>(connManager)); RTMPMinaConnection conn = (RTMPMinaConnection) connManager.getConnectionBySessionId(sessionId); handler.connectionOpened(conn); }
String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); if (log.isTraceEnabled()) { log.trace("Message sent on session: {} id: {}", session.getId(), sessionId);
log.trace("Message received on session: {} id: {}", session.getId(), sessionId);
/** {@inheritDoc} */ @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { if (log.isTraceEnabled()) { log.trace("Idle (session: {}) local: {} remote: {}\nread: {} write: {}", session.getId(), session.getLocalAddress(), session.getRemoteAddress(), session.getReadBytes(), session.getWrittenBytes()); } String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); if (sessionId != null) { RTMPMinaConnection conn = (RTMPMinaConnection) RTMPConnManager.getInstance().getConnectionBySessionId(sessionId); if (conn != null) { // close the idle socket conn.onInactive(); } } }
/** {@inheritDoc} */ @Override public void sessionClosed(IoSession session) throws Exception { String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); log.debug("Session closed: {} id: {}", session.getId(), sessionId); if (log.isTraceEnabled()) { log.trace("Session attributes: {}", session.getAttributeKeys()); } if (sessionId != null) { RTMPMinaConnection conn = (RTMPMinaConnection) RTMPConnManager.getInstance().getConnectionBySessionId(sessionId); if (conn != null) { // fire-off closed event handler.connectionClosed(conn); // clear any session attributes we may have previously set // TODO: verify this cleanup code is necessary. The session is over and will be garbage collected surely? if (session.containsAttribute(RTMPConnection.RTMP_HANDSHAKE)) { session.removeAttribute(RTMPConnection.RTMP_HANDSHAKE); } if (session.containsAttribute(RTMPConnection.RTMPE_CIPHER_IN)) { session.removeAttribute(RTMPConnection.RTMPE_CIPHER_IN); session.removeAttribute(RTMPConnection.RTMPE_CIPHER_OUT); } } else { log.warn("Connection was not found for {}", sessionId); } cleanSession(session, false); } else { log.debug("Connections session id was null in session, may already be closed"); } }
log.debug("Forcing close on session: {} id: {}", session.getId(), sessionId); log.debug("Session closing: {}", session.isClosing());
} else { sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); log.warn("Session previously created: {} id: {}", session.getId(), sessionId); RTMPConnManager connManager = (RTMPConnManager) RTMPConnManager.getInstance(); if ((RTMPMinaConnection) connManager.getConnectionBySessionId(sessionId) == null) {
@Override public void sessionClosed(IoSession session) throws Exception { super.sessionClosed(session); logger.debug("Session[{}] closed", session.getId()); }
@Override public void sessionCreated(IoSession session) throws Exception { super.sessionCreated(session); Line line = state.getOrCreateLine((InetSocketAddress)session.getRemoteAddress()); session.setAttribute("line", line); logger.debug("Session[{}] created", session.getId()); }
@Override public void messageReceived(IoSession session, Object message) throws Exception { if (message instanceof IoBuffer) { IoBuffer buffer = (IoBuffer) message; String response = buffer.getString(decoder); int br = response.getBytes().length; logger.debug("RECV[{}] from {}: {} bytes: {}", new Object[]{ session.getId(), (InetSocketAddress)session.getRemoteAddress(), br, response}); Telex telex = (Telex) JsonMapper.fromJson(response, TelehashPackage.Literals.TELEX); switch (state.getConnectionStatus()) { case SEEDING: completeBootstrap(session, telex, br); break; case CONNECTED: processTelex(session, telex, br); break; } } }
public void dispose(IoSession ioSession) throws Exception { final IoHandler handler = ioSession.getHandler(); if (handler instanceof XmppIoHandlerAdapter) { XmppIoHandlerAdapter xmppIoHandlerAdapter = (XmppIoHandlerAdapter)handler; xmppIoHandlerAdapter.sessionClosed(ioSession); logger.debug("terminated and disposed session id = " + ioSession.getId()); } else { logger.warn("unhandled StanzaWriterProtocolEncoder.dispose()"); } }
@Override public void sessionClosed(IoSession session) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("[" + session.getId() + "] session closed"); } IoSession detachedSession = AbstractProxyHandler.detachSessions(session); if (detachedSession != null) { detachedSession.close(false); } }
/** * 用户连接服务器 * * @param userSession */ public void onUserConnected(UserSession userSession) { if (userSession.getClientSession() != null) { allSessions.put(userSession.getClientSession().getId(), userSession); } }
protected AttachedSessionManager attachSessions(IoSession session, IoSession attachedSession) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("[" + session.getId() + "->" + attachedSession.getId() + "] attaching sessions"); } AttachedSessionManager attachedSessionManager = new AttachedSessionManager(attachedSession); session.setAttribute(ATTACHED_SESSION_KEY, attachedSessionManager); attachedSession.setAttribute(ATTACHED_SESSION_KEY, new AttachedSessionManager(session)); return attachedSessionManager; }
public void quit(UserSession userSession, Reason reason) { allSessions.remove(userSession.getClientSession().getId()); userSessions.remove(userSession.getUserId()); roleSessions.remove(userSession.getRoleId()); }
public IoSession getHallSession() { if (hallSession == null || !hallSession.isConnected()) { ServerInfo serverInfo = ServerManager.getInstance().getGameServerInfo(ServerType.HALL, hallServerId); if (serverInfo != null) { hallSession = serverInfo.getMostIdleIoSession(); LOGGER.debug("用户{} 大厅session{}", userId, hallSession.getId()); } } return hallSession; }
protected void logFilterWrite(IoSession session, Object message) { if (getFilterWriteStrategy().shouldLog(logger)) { if (message instanceof Message) { message = ((Message) message).toVerboseString(); } getFilterWriteStrategy().log(logger, writeFormat, session.getId(), message); } }