def on_connection_shutdown()

in awsiot/eventstreamrpc.py [0:0]


    def on_connection_shutdown(self, reason, **kwargs):
        connect_future = None
        with self.owner._synced as synced:
            connect_future = synced.connect_future
            if reason is None:
                reason = synced.close_reason

            synced.connect_future = None
            synced.state = _ClientState.DISCONNECTED
            synced.current_handler = None
            synced.current_connection = None
            synced.close_reason = None
            if reason is None:
                synced.closed_future.set_result(None)
            else:
                synced.closed_future.set_exception(reason)

        # complete futures, and invoke callbacks, after lock is released

        # if connect_future still exists, mark that setup was a failure
        if connect_future:
            # if user called close() without a reason,
            # set a reason that the setup_future has failed
            if reason is None:
                reason = ConnectionClosedError("close() called during connection setup")
            logger.error("%r connect failed: %r", self.owner, reason)
            connect_future.set_exception(reason)
        else:
            # connect_future no longer exists, which means on_setup fired,
            # which means on_disconnect should fire now
            if reason:
                logger.info("%r disconnected, reason: %r", self.owner, reason)
            else:
                logger.info("%r disconnected", self.owner)
            self.lifecycle_handler.on_disconnect(reason)