private Pubsub()

in src/main/java/com/spotify/google/cloud/pubsub/client/Pubsub.java [134:184]


  private Pubsub(final Builder builder) {
    final AsyncHttpClientConfig config = builder.clientConfig.build();

    log.debug("creating new pubsub client with config:");
    log.debug("uri: {}", builder.uri);
    log.debug("connect timeout: {}", config.getConnectTimeout());
    log.debug("read timeout: {}", config.getReadTimeout());
    log.debug("request timeout: {}", config.getRequestTimeout());
    log.debug("max connections: {}", config.getMaxConnections());
    log.debug("max connections per host: {}", config.getMaxConnectionsPerHost());
    log.debug("enabled cipher suites: {}", Arrays.toString(config.getEnabledCipherSuites()));
    log.debug("response compression enforced: {}", config.isCompressionEnforced());
    log.debug("request compression level: {}", builder.compressionLevel);
    log.debug("accept any certificate: {}", config.isAcceptAnyCertificate());
    log.debug("follows redirect: {}", config.isFollowRedirect());
    log.debug("pooled connection TTL: {}", config.getConnectionTTL());
    log.debug("pooled connection idle timeout: {}", config.getPooledConnectionIdleTimeout());
    log.debug("pooling connections: {}", config.isAllowPoolingConnections());
    log.debug("pooling SSL connections: {}", config.isAllowPoolingSslConnections());
    log.debug("user agent: {}", config.getUserAgent());
    log.debug("max request retry: {}", config.getMaxRequestRetry());

    final SSLSocketFactory sslSocketFactory =
        new ConfigurableSSLSocketFactory(config.getEnabledCipherSuites(),
            (SSLSocketFactory) SSLSocketFactory.getDefault());

    this.transport = new NetHttpTransport.Builder()
        .setSslSocketFactory(sslSocketFactory)
        .build();

    this.client = new AsyncHttpClient(config);

    this.compressionLevel = builder.compressionLevel;

    if (builder.credential == null) {
      this.credential = scoped(defaultCredential());
    } else {
      this.credential = scoped(builder.credential);
    }

    this.baseUri = builder.uri.toString();

    // Get initial access token
    refreshAccessToken();
    if (accessToken == null) {
      throw new RuntimeException("Failed to get access token");
    }

    // Wake up every 10 seconds to check if access token has expired
    scheduler.scheduleAtFixedRate(this::refreshAccessToken, 10, 10, SECONDS);
  }