package org.webpieces.httpclient.api;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import org.webpieces.data.api.BufferCreationPool;
import org.webpieces.httpclient.impl.HttpClientImpl;
import org.webpieces.httpparser.api.HttpParser;
import org.webpieces.httpparser.api.HttpParserFactory;
import org.webpieces.nio.api.ChannelManager;
import org.webpieces.nio.api.ChannelManagerFactory;
import org.webpieces.util.threading.NamedThreadFactory;
public abstract class HttpClientFactory {
public static HttpClient createHttpClient(int numThreads) {
Executor executor = Executors.newFixedThreadPool(numThreads, new NamedThreadFactory("httpclient"));
BufferCreationPool pool = new BufferCreationPool();
HttpParser parser = HttpParserFactory.createParser(pool);
ChannelManagerFactory factory = ChannelManagerFactory.createFactory();
ChannelManager mgr = factory.createMultiThreadedChanMgr("httpClientChanMgr", pool, executor);
return createHttpClient(mgr, parser);
}
public static HttpClient createHttpClient(ChannelManager mgr, HttpParser parser) {
return new HttpClientImpl(mgr, parser);
}
}