protected InetSocketAddress startProxy(InetSocketAddress address) throws Exception { proxy = new Server(); ProxyEngineSelector proxyEngineSelector = new ProxyEngineSelector(); SPDYProxyEngine spdyProxyEngine = new SPDYProxyEngine(factory); proxyEngineSelector.putProxyEngine("spdy/" + version, spdyProxyEngine); proxyEngineSelector.putProxyServerInfo( "localhost", new ProxyEngineSelector.ProxyServerInfo( "spdy/" + version, address.getHostName(), address.getPort())); proxyConnector = new HTTPSPDYProxyServerConnector(server, proxyEngineSelector); proxyConnector.setPort(0); proxy.addConnector(proxyConnector); proxy.start(); return new InetSocketAddress("localhost", proxyConnector.getLocalPort()); }
private HTTPStream syn(boolean close) { HTTPStream stream = new HTTPStream(1, (byte) 0, session, null); StreamFrameListener streamFrameListener = proxyEngineSelector.onSyn(stream, new SynInfo(headers, close)); stream.setStreamFrameListener(streamFrameListener); return stream; }
@Override public boolean messageComplete() { if (stream == null) { assert content == null; if (headers.isEmpty()) proxyEngineSelector.onGoAway(session, new GoAwayReceivedInfo(0, SessionStatus.OK)); else syn(true); } else { stream.getStreamFrameListener().onData(stream, toDataInfo(content, true)); } headers.clear(); stream = null; content = null; return false; }