All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.fabric8.maven.docker.access.hc.unix.UnixSocketClientBuilder Maven / Gradle / Ivy

The newest version!
package io.fabric8.maven.docker.access.hc.unix;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import io.fabric8.maven.docker.access.hc.ClientBuilder;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.DnsResolver;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.impl.client.*;
import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

public class UnixSocketClientBuilder implements ClientBuilder {

    private final int maxConnections;
    private final Registry registry;
    private final DnsResolver dnsResolver;

    public UnixSocketClientBuilder(String unixSocketPath, int maxConnections) {
        this.maxConnections = maxConnections;
        registry = buildRegistry(unixSocketPath);
        dnsResolver = nullDnsResolver();
    }

    @Override
    public CloseableHttpClient buildPooledClient() {
        final HttpClientBuilder httpBuilder = HttpClients.custom();
        final PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(registry, dnsResolver);
        manager.setDefaultMaxPerRoute(maxConnections);
        httpBuilder.setConnectionManager(manager);
        return httpBuilder.build();
    }

    @Override
    public CloseableHttpClient buildBasicClient() throws IOException {
        BasicHttpClientConnectionManager manager = new BasicHttpClientConnectionManager(registry, null, null, dnsResolver);
        return HttpClients.custom().setConnectionManager(manager).build();
    }

    private Registry buildRegistry(String path) {
        final RegistryBuilder registryBuilder = RegistryBuilder.create();
        registryBuilder.register("unix", new UnixConnectionSocketFactory(path));
        return registryBuilder.build();
    }

    private  DnsResolver nullDnsResolver() {
        return new DnsResolver() {
            @Override
            public InetAddress[] resolve(final String host) throws UnknownHostException {
                return new InetAddress[] {null};
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy