/** {@inheritDoc} */ @Override public void messageReceived(IoSession session, Object message) throws Exception { if (log.isTraceEnabled()) { log.trace("messageReceived session: {} message: {}", session, message); log.trace("Filter chain: {}", session.getFilterChain()); } String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); if (log.isTraceEnabled()) { log.trace("Message received on session: {} id: {}", session.getId(), sessionId); } RTMPMinaConnection conn = (RTMPMinaConnection) RTMPConnManager.getInstance().getConnectionBySessionId(sessionId); if (conn != null) { if (message != null) { if (message instanceof Packet) { byte state = conn.getStateCode(); // checking the state before allowing a task to be created will hopefully prevent rejected // task exceptions if (state != RTMP.STATE_DISCONNECTING && state != RTMP.STATE_DISCONNECTED) { conn.handleMessageReceived((Packet) message); } else { log.info( "Ignoring received message on {} due to state: {}", sessionId, RTMP.states[state]); } } } } else { log.warn("Connection was not found for {}, force closing", sessionId); forceClose(session); } }
/** {@inheritDoc} */ @Override public void messageSent(IoSession session, Object message) throws Exception { log.trace("messageSent session: {} message: {}", session, message); String sessionId = (String) session.getAttribute(RTMPConnection.RTMP_SESSION_ID); if (log.isTraceEnabled()) { log.trace("Message sent on session: {} id: {}", session.getId(), sessionId); } if (sessionId != null) { RTMPMinaConnection conn = (RTMPMinaConnection) RTMPConnManager.getInstance().getConnectionBySessionId(sessionId); if (conn != null) { final byte state = conn.getStateCode(); switch (state) { case RTMP.STATE_CONNECTED: if (message instanceof Packet) { handler.messageSent(conn, (Packet) message); } else if (log.isDebugEnabled()) { log.debug( "Message was not of Packet type; its type: {}", message != null ? message.getClass().getName() : "null"); } break; case RTMP.STATE_CONNECT: case RTMP.STATE_HANDSHAKE: if (log.isTraceEnabled()) { log.trace("messageSent: {}", Hex.encodeHexString(((IoBuffer) message).array())); } break; case RTMP.STATE_DISCONNECTING: case RTMP.STATE_DISCONNECTED: default: } } else { log.warn( "Destination connection was null, it is already disposed. Session id: {}", sessionId); } } }