software.amazon.awssdk.iot.discovery.DiscoveryClientConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aws-iot-device-sdk Show documentation
Show all versions of aws-iot-device-sdk Show documentation
Java bindings for the AWS IoT Core Service
package software.amazon.awssdk.iot.discovery;
import java.util.concurrent.ExecutorService;
import software.amazon.awssdk.crt.http.HttpProxyOptions;
import software.amazon.awssdk.crt.io.ClientBootstrap;
import software.amazon.awssdk.crt.io.SocketOptions;
import software.amazon.awssdk.crt.io.TlsContext;
import software.amazon.awssdk.crt.io.TlsContextOptions;
/**
* Configuration object for the Greengrass discovery client
*/
public class DiscoveryClientConfig implements AutoCloseable {
final private ClientBootstrap bootstrap;
final private TlsContext tlsContext;
final private SocketOptions socketOptions;
final private String region;
final private int maxConnections;
final private HttpProxyOptions proxyOptions;
final private String ggServerName;
private ExecutorService discoveryExecutor;
/**
* Constructor for DiscoveryClientConfig creates the correct endpoint if not in a special region
*
* @param bootstrap client bootstrap to use to establish network connections
* @param tlsContextOptions tls configuration for client network connections. For greengrass discovery, the
* tls context must be initialized with the certificate and private key of the
* device/thing that is querying greengrass core availability.
* @param socketOptions socket configuration for client network connections
* @param region AWS region to query for greengrass information
* @param maxConnections maximum concurrent http connections within the client
* @param proxyOptions proxy configuration for client network connections
*/
public DiscoveryClientConfig(
final ClientBootstrap bootstrap,
final TlsContextOptions tlsContextOptions,
final SocketOptions socketOptions,
final String region,
final int maxConnections,
final HttpProxyOptions proxyOptions) {
this.bootstrap = bootstrap;
this.tlsContext = new TlsContext(tlsContextOptions);
this.socketOptions = socketOptions;
this.region = region;
this.maxConnections = maxConnections;
this.proxyOptions = proxyOptions;
this.ggServerName = "";
this.discoveryExecutor = null;
}
/**
* Constructor for DiscoveryClientConfig creates the correct endpoint if not in a special region using
* the default static bootstrap.
*
* @param tlsContextOptions tls configuration for client network connections. For greengrass discovery, the
* tls context must be initialized with the certificate and private key of the
* device/thing that is querying greengrass core availability.
* @param socketOptions socket configuration for client network connections
* @param region AWS region to query for greengrass information
* @param maxConnections maximum concurrent http connections within the client
* @param proxyOptions proxy configuration for client network connections
*/
public DiscoveryClientConfig(
final TlsContextOptions tlsContextOptions,
final SocketOptions socketOptions,
final String region,
final int maxConnections,
final HttpProxyOptions proxyOptions) {
this(ClientBootstrap.getOrCreateStaticDefault(), tlsContextOptions,
socketOptions, region, maxConnections, proxyOptions);
}
/**
* Default Constructor for DiscoveryClientConfig that allows the specification of a specific ggServerName to use in special regions
*
* @param bootstrap client bootstrap to use to establish network connections
* @param tlsContextOptions tls configuration for client network connections. For greengrass discovery, the
* tls context must be initialized with the certificate and private key of the
* device/thing that is querying greengrass core availability.
* @param socketOptions socket configuration for client network connections
* @param maxConnections maximum concurrent http connections within the client
* @param proxyOptions proxy configuration for client network connections
* @param ggServerName full endpoint to use when connecting in special regions
*/
public DiscoveryClientConfig(
final ClientBootstrap bootstrap,
final TlsContextOptions tlsContextOptions,
final SocketOptions socketOptions,
final int maxConnections,
final HttpProxyOptions proxyOptions,
final String ggServerName) {
this.bootstrap = bootstrap;
this.tlsContext = new TlsContext(tlsContextOptions);
this.socketOptions = socketOptions;
this.region = "";
this.maxConnections = maxConnections;
this.proxyOptions = proxyOptions;
this.ggServerName = ggServerName;
this.discoveryExecutor = null;
}
/**
* Default Constructor for DiscoveryClientConfig that allows the specification of a specific ggServerName to use in special regions
* using the static default client bootstrap.
*
* @param tlsContextOptions tls configuration for client network connections. For greengrass discovery, the
* tls context must be initialized with the certificate and private key of the
* device/thing that is querying greengrass core availability.
* @param socketOptions socket configuration for client network connections
* @param maxConnections maximum concurrent http connections within the client
* @param proxyOptions proxy configuration for client network connections
* @param ggServerName full endpoint to use when connecting in special regions
*/
public DiscoveryClientConfig(
final TlsContextOptions tlsContextOptions,
final SocketOptions socketOptions,
final int maxConnections,
final HttpProxyOptions proxyOptions,
final String ggServerName) {
this(ClientBootstrap.getOrCreateStaticDefault(), tlsContextOptions,
socketOptions, maxConnections, proxyOptions, ggServerName);
}
/**
* @return client bootstrap to use to establish network connections
*/
public ClientBootstrap getBootstrap() {
return bootstrap;
}
/**
* @return tls configuration for client network connections
*/
public TlsContext getTlsContext() {
return tlsContext;
}
/**
* @return socket configuration for client network connections
*/
public SocketOptions getSocketOptions() {
return socketOptions;
}
/**
* @return AWS region to query for greengrass information
*/
public String getRegion() {
return region;
}
/**
* @return maximum concurrent http connections within the client
*/
public int getMaxConnections() {
return maxConnections;
}
/**
* @return proxy configuration for client network connections
*/
public HttpProxyOptions getProxyOptions() {
return proxyOptions;
}
public String getGGServerName() {
return ggServerName;
}
/**
* @return the ExecutorService set for this discover client config. Returns null if one hasn't been set.
*/
public ExecutorService getDiscoveryExecutor() {
return this.discoveryExecutor;
}
/**
* Sets the executor that is used when calling discover().
* If set using this function, you are expected to close/shutdown the executor when finished with it.
*
* If it is not set, the discovery client will internally manage its own executor.
*
* @param override The executor to use
* @return The client config
*/
public DiscoveryClientConfig setDiscoveryExecutor(ExecutorService override) {
this.discoveryExecutor = override;
return this;
}
@Override
public void close() {
if(tlsContext != null) {
tlsContext.close();
}
}
}