@Override public Connection newConnection(EndPoint endPoint, Map<String, Object> context) throws IOException { SPDYClient client = (SPDYClient) context.get(SPDY_CLIENT_CONTEXT_KEY); SPDYClient.Factory factory = client.getFactory(); ByteBufferPool byteBufferPool = factory.getByteBufferPool(); CompressionFactory compressionFactory = new StandardCompressionFactory(); Parser parser = new Parser(compressionFactory.newDecompressor()); Generator generator = new Generator(byteBufferPool, compressionFactory.newCompressor()); SPDYConnection connection = new ClientSPDYConnection(endPoint, byteBufferPool, parser, factory, client.isDispatchIO()); FlowControlStrategy flowControlStrategy = client.newFlowControlStrategy(); SessionFrameListener listener = (SessionFrameListener) context.get(SPDY_SESSION_LISTENER_CONTEXT_KEY); StandardSession session = new StandardSession( client.getVersion(), byteBufferPool, factory.getScheduler(), connection, endPoint, connection, 1, listener, generator, flowControlStrategy); session.setWindowSize(client.getInitialWindowSize()); parser.addListener(session); connection.setSession(session); @SuppressWarnings("unchecked") Promise<Session> promise = (Promise<Session>) context.get(SPDY_SESSION_PROMISE_CONTEXT_KEY); promise.succeeded(session); return connection; }