@SuppressWarnings("unchecked") @Override public final void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { doFilterWrite(nextFilter, (T)session, writeRequest); }
@SuppressWarnings("unchecked") @Override public final void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { doMessageReceived(nextFilter, (T)session, message); }
@SuppressWarnings("unchecked") @Override public final void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception { doSessionClosed(nextFilter, (T)session); }
@SuppressWarnings("unchecked") @Override public final void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception { doSessionIdle(nextFilter, (T)session, status); }
@SuppressWarnings("unchecked") @Override public final void exceptionCaught(NextFilter nextFilter, IoSession session, Throwable cause) throws Exception { doExceptionCaught(nextFilter, (T)session, cause); }
@SuppressWarnings("unchecked") @Override public final void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception { doSessionOpened(nextFilter, (T)session); }
@SuppressWarnings("unchecked") @Override public final void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception { doSessionCreated(nextFilter, (T)session); }
@SuppressWarnings("unchecked") @Override public final void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { doMessageSent(nextFilter, (T)session, writeRequest); }
@SuppressWarnings("unchecked") @Override public final void filterClose(NextFilter nextFilter, IoSession session) throws Exception { doFilterClose(nextFilter, (T)session); }
@Override protected void doSessionIdle(NextFilter nextFilter, IoSessionEx session, IdleStatus status) throws Exception { if (status == BOTH_IDLE) { if (logger.isInfoEnabled()) { logger.info(String.format("Closing tcp session %s because idle timeout of %d secs is exceeded", session, idleTimeout)); } session.close(false); } super.doSessionIdle(nextFilter, session, status); }
@Override protected void doExceptionCaught(NextFilter nextFilter, IoSessionEx session, Throwable cause) throws Exception { managementContext.getManagementFilterStrategy() .doExceptionCaught(managementContext, serviceBean, session.getId(), cause); super.doExceptionCaught(nextFilter, session, cause); }
@Override protected void doSessionOpened(NextFilter nextFilter, IoSessionEx session) throws Exception { activeSessions.put(session.getId(), session); super.doSessionOpened(nextFilter, session); }
@Override protected void doSessionIdle(NextFilter nextFilter, IoSessionEx session, IdleStatus status) throws Exception { if (status == IdleStatus.WRITER_IDLE) { writePong(nextFilter, session); } super.doSessionIdle(nextFilter, session, status); }
@Override protected void doMessageReceived(NextFilter nextFilter, IoSessionEx session, Object message) throws Exception { managementContext.getManagementFilterStrategy() .doMessageReceived(managementContext, serviceBean, session.getId(), session.getReadBytes(), message); super.doMessageReceived(nextFilter, session, message); }
@Override protected void doFilterWrite(NextFilter nextFilter, IoSessionEx session, WriteRequest writeRequest) throws Exception { managementContext.getManagementFilterStrategy() .doFilterWrite(managementContext, serviceBean, session.getId(), session.getWrittenBytes(), writeRequest); super.doFilterWrite(nextFilter, session, writeRequest); }
@Override protected void doSessionClosed(NextFilter nextFilter, IoSessionEx session) throws Exception { activeSessions.remove(session.getId()); super.doSessionClosed(nextFilter, session); } }
super.doSessionIdle(nextFilter, session, status);
@Override protected void doMessageReceived(NextFilter nextFilter, IoSessionEx session, Object message) throws Exception { if (message instanceof IoBufferEx) { IoBufferEx buffer = (IoBufferEx) message; if (buffer.remaining() % this.align > 0) { if (logger.isTraceEnabled()) { logger.trace(String.format("Received message with length: %d, aligning on %d bytes", buffer.remaining(), align)); } final int padLength = this.align - (buffer.remaining() % this.align); final byte[] padding = new byte[padLength]; Arrays.fill(padding, (byte) 0x00); final IoBufferAllocatorEx<?> allocator = session.getBufferAllocator(); IoBufferEx alignedBuffers = allocator.wrap(allocator.allocate(buffer.remaining() + padLength)); alignedBuffers.put(buffer); alignedBuffers.put(padding); message = alignedBuffers.flip(); } } super.doMessageReceived(nextFilter, session, message); } }
@Override protected void doFilterWrite(NextFilter nextFilter, HttpSession session, WriteRequest writeRequest) throws Exception { // GL.debug("http", getClass().getSimpleName() + " filter write."); // note: this assumes the session is still not committed // but commitFuture is on HttpAcceptSession only, // so need to add to HttpConnectSession interface too // and then promote to HttpSession.getCommitFuture() String contentLengthHeader = session.getWriteHeader(HEADER_CONTENT_LENGTH); int contentLength = (contentLengthHeader != null) ? parseInt(contentLengthHeader) : 0; Object message = writeRequest.getMessage(); IoBuffer buf = (IoBuffer) message; int remaining = buf.remaining(); int newContentLength = contentLength + remaining; session.setWriteHeader(HEADER_CONTENT_LENGTH, valueOf(newContentLength)); // GL.debug("http", String.format(getClass().getSimpleName() + " reset content length header from %d to %d.", // contentLength, newContentLength)); // auto-remove after a single HttpRequestMessage or HttpResponseMessage IoFilterChain filterChain = session.getFilterChain(); filterChain.remove(this); super.doFilterWrite(nextFilter, session, writeRequest); }
@Override protected void doSessionClosed(NextFilter nextFilter, IoSessionEx session) throws Exception { ManagementSessionType managementSessionType = Utils.getManagementSessionType(session); managementContext.getManagementFilterStrategy() .doSessionClosed(managementContext, serviceBean, session.getId(), managementSessionType); managementContext.decrementOverallSessionCount(); serviceCounterManager.decrementSessionCounters(managementSessionType); super.doSessionClosed(nextFilter, session); }