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)