@Override public void asyncDispatch() { ServerHTTPSPDYAsyncConnection connection = (ServerHTTPSPDYAsyncConnection)stream.getAttribute(CONNECTION_ATTRIBUTE); connection.async(); }
@Override public void onData(Stream stream, final DataInfo dataInfo) { if (LOG.isDebugEnabled()) LOG.debug("Received {} on {}", dataInfo, stream); HttpChannelOverSPDY channel = (HttpChannelOverSPDY)stream.getAttribute(CHANNEL_ATTRIBUTE); channel.requestContent(dataInfo, dataInfo.isClose()); }
@Override public void onData(Stream clientStream, final DataInfo clientDataInfo) { logger.debug("C -> P {} on {}", clientDataInfo, clientStream); ByteBufferDataInfo serverDataInfo = new ByteBufferDataInfo(clientDataInfo.asByteBuffer(false), clientDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); clientDataInfo.consume(delta); } }; StreamHandler streamHandler = (StreamHandler)clientStream.getAttribute(STREAM_HANDLER_ATTRIBUTE); streamHandler.data(serverDataInfo); }
@Override public void onHeaders(Stream stream, HeadersInfo headersInfo) { if (LOG.isDebugEnabled()) LOG.debug("Received {} on {}", headersInfo, stream); HttpChannelOverSPDY channel = (HttpChannelOverSPDY)stream.getAttribute(CHANNEL_ATTRIBUTE); channel.requestHeaders(headersInfo.getHeaders(), headersInfo.isClose()); }
@Override public void onHeaders(Stream stream, HeadersInfo headersInfo) { logger.debug("Received {} on {}", headersInfo, stream); ServerHTTPSPDYAsyncConnection connection = (ServerHTTPSPDYAsyncConnection)stream.getAttribute(CONNECTION_ATTRIBUTE); connection.headers(headersInfo.getHeaders()); if (headersInfo.isClose()) connection.endRequest(); }
@Override public void onData(Stream stream, DataInfo dataInfo) { logger.debug("Received {} on {}", dataInfo, stream); ServerHTTPSPDYAsyncConnection connection = (ServerHTTPSPDYAsyncConnection)stream.getAttribute(CONNECTION_ATTRIBUTE); connection.content(dataInfo, dataInfo.isClose()); if (dataInfo.isClose()) connection.endRequest(); } }
@Override public void onData(Stream serverStream, final DataInfo serverDataInfo) { logger.debug("S -> P pushed {} on {}", serverDataInfo, serverStream); ByteBufferDataInfo clientDataInfo = new ByteBufferDataInfo(serverDataInfo.asByteBuffer(false), serverDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); serverDataInfo.consume(delta); } }; StreamHandler handler = (StreamHandler)serverStream.getAttribute(STREAM_HANDLER_ATTRIBUTE); handler.data(clientDataInfo); } }
@Override public void onData(Stream clientStream, final DataInfo clientDataInfo) { if (LOG.isDebugEnabled()) LOG.debug("C -> P {} on {}", clientDataInfo, clientStream); ByteBufferDataInfo serverDataInfo = new ByteBufferDataInfo(clientDataInfo.asByteBuffer(false), clientDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); clientDataInfo.consume(delta); } }; StreamPromise streamPromise = (StreamPromise)clientStream.getAttribute(STREAM_PROMISE_ATTRIBUTE); streamPromise.data(serverDataInfo); }
@Override public void onRst(Session serverSession, RstInfo serverRstInfo) { Stream serverStream = serverSession.getStream(serverRstInfo.getStreamId()); if (serverStream != null) { Stream clientStream = (Stream)serverStream.getAttribute(CLIENT_STREAM_ATTRIBUTE); if (clientStream != null) { Session clientSession = clientStream.getSession(); RstInfo clientRstInfo = new RstInfo(clientStream.getId(), serverRstInfo.getStreamStatus()); clientSession.rst(clientRstInfo, Callback.Adapter.INSTANCE); } } }
@Override public void onRst(Session serverSession, RstInfo serverRstInfo) { Stream serverStream = serverSession.getStream(serverRstInfo.getStreamId()); if (serverStream != null) { Stream clientStream = (Stream)serverStream.getAttribute(CLIENT_STREAM_ATTRIBUTE); if (clientStream != null) { Session clientSession = clientStream.getSession(); RstInfo clientRstInfo = new RstInfo(clientStream.getId(), serverRstInfo.getStreamStatus()); clientSession.rst(clientRstInfo, getTimeout(), TimeUnit.MILLISECONDS, new Handler.Adapter<Void>()); } } }
@Override public StreamFrameListener onSyn(Stream serverStream, SynInfo serverSynInfo) { logger.debug("S -> P pushed {} on {}", serverSynInfo, serverStream); Headers headers = new Headers(serverSynInfo.getHeaders(), false); addResponseProxyHeaders(serverStream, headers); customizeResponseHeaders(serverStream, headers); Stream clientStream = (Stream)serverStream.getAssociatedStream().getAttribute(CLIENT_STREAM_ATTRIBUTE); convert(serverStream.getSession().getVersion(), clientStream.getSession().getVersion(), headers); StreamHandler handler = new StreamHandler(clientStream, serverSynInfo); serverStream.setAttribute(STREAM_HANDLER_ATTRIBUTE, handler); clientStream.syn(new SynInfo(headers, serverSynInfo.isClose()), getTimeout(), TimeUnit.MILLISECONDS, handler); return this; }