Class ClientBootstrap

  • All Implemented Interfaces:
    AutoCloseable

    public final class ClientBootstrap
    extends CrtResource
    This class wraps the aws_client_bootstrap from aws-c-io to provide a client context for all protocol stacks in the AWS Common Runtime.
    • Constructor Detail

      • ClientBootstrap

        public ClientBootstrap​(EventLoopGroup elg,
                               HostResolver hr)
                        throws CrtRuntimeException
        Creates a new ClientBootstrap. Most applications will only ever need one instance of this.
        Parameters:
        hr - A HostResolver instance, most applications only ever have one
        elg - An EventLoopGroup instance, most applications only ever have one
        Throws:
        CrtRuntimeException - If the provided EventLoopGroup is null or invalid, or if the system is unable to allocate space for a native client bootstrap object
    • Method Detail

      • canReleaseReferencesImmediately

        protected boolean canReleaseReferencesImmediately()
        Determines whether a resource releases its dependencies at the same time the native handle is released or if it waits. Resources that wait are responsible for calling releaseReferences() manually.
        Specified by:
        canReleaseReferencesImmediately in class CrtResource
        Returns:
        true if this resource releases synchronously, false if this resource performs async shutdown
      • releaseNativeHandle

        protected void releaseNativeHandle()
        Cleans up the client bootstrap's associated native handle
        Specified by:
        releaseNativeHandle in class CrtResource
      • closeStaticDefault

        public static void closeStaticDefault()
        Closes the static ClientBootstrap, if it exists. Primarily intended for tests that use the static default ClientBootstrap, before they call waitForNoResources().
      • getOrCreateStaticDefault

        public static ClientBootstrap getOrCreateStaticDefault()
        This default will be used when a ClientBootstrap is not explicitly passed but is needed to allow the process to function. An example of this would be in the MQTT connection creation workflow. The default ClientBootstrap will use the default EventLoopGroup and HostResolver, creating them if necessary. The default ClientBootstrap will be automatically managed and released when it's resources are being freed, not requiring any manual memory management.
        Returns:
        the static default ClientBootstrap