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

com.clickhouse.client.grpc.ClickHouseGrpcClient Maven / Gradle / Ivy

package com.clickhouse.client.grpc;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicReference;

import com.clickhouse.client.ClickHouseClient;
import com.clickhouse.client.ClickHouseConfig;
import com.clickhouse.client.ClickHouseNode;
import com.clickhouse.client.ClickHouseProtocol;
import com.clickhouse.client.ClickHouseRequest;
import com.clickhouse.client.ClickHouseResponse;
import com.clickhouse.client.UnsupportedProtocolException;
import com.clickhouse.client.grpc.config.ClickHouseGrpcOption;
import com.clickhouse.config.ClickHouseOption;
@Deprecated
public class ClickHouseGrpcClient implements ClickHouseClient {
    private final AtomicReference ref;

    protected ClickHouseClient getInstance() {
        ClickHouseClient instance = ref.get();
        if (instance == null) {
            try {
                instance = new ClickHouseGrpcClientImpl();
            } catch (ExceptionInInitializerError | NoClassDefFoundError e) {
                throw new UnsupportedProtocolException(ClickHouseProtocol.GRPC,
                        "gRPC is not supported. Please use http protocol or add gRPC libraries to the classpath.");
            }
            if (!ref.compareAndSet(null, instance)) {
                instance.close();
                instance = ref.get();
            }
        }
        return instance;
    }

    public ClickHouseGrpcClient() {
        ref = new AtomicReference<>();
    }

    @Override
    public final boolean accept(ClickHouseProtocol protocol) {
        return ClickHouseProtocol.GRPC == protocol || ClickHouseClient.super.accept(protocol);
    }

    @Override
    public final Class getOptionClass() {
        return ClickHouseGrpcOption.class;
    }

    @Override
    public void init(ClickHouseConfig config) {
        getInstance().init(config);
    }

    @Override
    public boolean ping(ClickHouseNode server, int timeout) {
        return getInstance().ping(server, timeout);
    }

    @Override
    public CompletableFuture execute(ClickHouseRequest request) {
        return getInstance().execute(request);
    }

    @Override
    public ClickHouseConfig getConfig() {
        return getInstance().getConfig();
    }

    @Override
    public void close() {
        getInstance().close();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy