package org.webpieces.http2client.api; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import org.webpieces.data.api.BufferCreationPool; import org.webpieces.http2client.impl.Http2ClientImpl; import org.webpieces.nio.api.ChannelManager; import org.webpieces.nio.api.ChannelManagerFactory; import org.webpieces.util.threading.NamedThreadFactory; import com.webpieces.hpack.api.HpackParser; import com.webpieces.hpack.api.HpackParserFactory; import com.webpieces.http2engine.api.client.Http2ClientEngineFactory; import com.webpieces.http2engine.api.client.Http2Config; import com.webpieces.http2engine.api.client.InjectionConfig; import com.webpieces.util.time.Time; import com.webpieces.util.time.TimeImpl; public abstract class Http2ClientFactory { public static Http2Client createHttpClient(int numThreads) { Http2Config config = new Http2Config(); Executor executor = Executors.newFixedThreadPool(numThreads, new NamedThreadFactory("httpclient")); BufferCreationPool pool = new BufferCreationPool(); HpackParser hpackParser = HpackParserFactory.createParser(pool, false); ChannelManagerFactory factory = ChannelManagerFactory.createFactory(); ChannelManager mgr = factory.createMultiThreadedChanMgr("httpClientChanMgr", pool, executor); InjectionConfig injConfig = new InjectionConfig(executor, hpackParser, new TimeImpl(), config); return createHttpClient(mgr, injConfig); } public static Http2Client createHttpClient(Http2Config config, ChannelManager mgr, Executor executor, Time time) { BufferCreationPool pool = new BufferCreationPool(); HpackParser hpackParser = HpackParserFactory.createParser(pool, false); InjectionConfig injConfig = new InjectionConfig(executor, hpackParser, time, config); return createHttpClient(mgr, injConfig); } public static Http2Client createHttpClient(ChannelManager mgr, InjectionConfig injectionConfig) { Http2ClientEngineFactory engineFactory = new Http2ClientEngineFactory(injectionConfig); return new Http2ClientImpl(mgr, engineFactory ); } }