@SuppressWarnings("unchecked") @Override public final void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { doFilterWrite(nextFilter, (T)session, writeRequest); }
@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 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); }