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

com.eventstore.dbclient.EventStoreDBClientBase Maven / Gradle / Ivy

package com.eventstore.dbclient;

import io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.shaded.io.netty.handler.ssl.SslContext;
import io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder;
import io.grpc.netty.shaded.io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.SSLException;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

public class EventStoreDBClientBase {
    final Logger logger = LoggerFactory.getLogger(EventStoreDBClientBase.class);
    final protected GrpcClient client;
    final protected UserCredentials credentials;

    protected EventStoreDBClientBase(EventStoreDBClientSettings settings) {
        if (settings.getDefaultCredentials() != null) {
            this.credentials = settings.getDefaultCredentials().toUserCredentials();
        } else {
            this.credentials = null;
        }

        SslContext sslContext = null;

        if (settings.isTls()) {
            try {
                SslContextBuilder sslContextBuilder = GrpcSslContexts.forClient();

                if (!settings.isTlsVerifyCert()) {
                    sslContextBuilder.trustManager(InsecureTrustManagerFactory.INSTANCE);
                }

                sslContext = sslContextBuilder.build();
            } catch (SSLException e) {
                logger.error("Exception when creating SSL context", e);
                throw new RuntimeException(e);
            }
        }

        if (settings.isDnsDiscover()) {
            this.client = new EventStoreDBClusterClient(null, settings.getHosts()[0], settings.getNodePreference(), sslContext, settings);
            return;
        }

        if (settings.getHosts().length > 1) {
            ArrayList seeds = new ArrayList<>();

            for (Endpoint seed : settings.getHosts()) {
                seeds.add(new InetSocketAddress(seed.getHostname(), seed.getPort()));
            }

            this.client = new EventStoreDBClusterClient(seeds, null, settings.getNodePreference(), sslContext, settings);
            return;
        }

        this.client = new SingleNodeClient(settings.getHosts()[0].getHostname(), settings.getHosts()[0].getPort(), sslContext, settings);
    }

    public void shutdown() throws ExecutionException, InterruptedException {
        this.client.shutdown();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy