private ManagedChannel createSingleChannel()

in extensions-support/google-pubsub/runtime/src/main/java/org/apache/camel/quarkus/support/google/pubsub/graal/GaxGrpcSubstitutions.java [70:130]


    private ManagedChannel createSingleChannel() throws IOException {
        GrpcHeaderInterceptor headerInterceptor = new GrpcHeaderInterceptor(headerProvider.getHeaders());
        ClientInterceptor metadataHandlerInterceptor = new GrpcMetadataHandlerInterceptorTarget();

        int colon = endpoint.lastIndexOf(':');
        if (colon < 0) {
            throw new IllegalStateException("invalid endpoint - should have been validated: " + endpoint);
        }
        int port = Integer.parseInt(endpoint.substring(colon + 1));
        String serviceAddress = endpoint.substring(0, colon);

        ManagedChannelBuilder<?> builder;
        ChannelCredentials channelCredentials;
        try {
            channelCredentials = createMtlsChannelCredentials();
        } catch (GeneralSecurityException e) {
            throw new IOException(e);
        }

        if (channelCredentials != null) {
            builder = Grpc.newChannelBuilder(endpoint, channelCredentials);
        } else {
            builder = ManagedChannelBuilder.forAddress(serviceAddress, port);
        }

        builder.disableServiceConfigLookUp();

        builder = builder.intercept(new GrpcChannelUUIDInterceptorTarget())
                .intercept(headerInterceptor)
                .intercept(metadataHandlerInterceptor)
                .userAgent(headerInterceptor.getUserAgentHeader())
                .executor(executor);

        if (maxInboundMetadataSize != null) {
            builder.maxInboundMetadataSize(maxInboundMetadataSize);
        }
        if (maxInboundMessageSize != null) {
            builder.maxInboundMessageSize(maxInboundMessageSize);
        }
        if (keepAliveTime != null) {
            builder.keepAliveTime(keepAliveTime.toMillis(), TimeUnit.MILLISECONDS);
        }
        if (keepAliveTimeout != null) {
            builder.keepAliveTimeout(keepAliveTimeout.toMillis(), TimeUnit.MILLISECONDS);
        }
        if (keepAliveWithoutCalls != null) {
            builder.keepAliveWithoutCalls(keepAliveWithoutCalls);
        }
        if (interceptorProvider != null) {
            builder.intercept(interceptorProvider.getInterceptors());
        }
        if (channelConfigurator != null) {
            builder = channelConfigurator.apply(builder);
        }

        ManagedChannel managedChannel = builder.build();
        if (channelPrimer != null) {
            channelPrimer.primeChannel(managedChannel);
        }
        return managedChannel;
    }