self._outstandingRequests.remove(missDetection)
+class TimedDisconnect(object):
+
+ def __init__(self, connRef):
+ self._connRef = connRef
+ self.__delayedDisconnect = gobject_utils.Timeout(self._on_delayed_disconnect)
+
+ def start(self):
+ self.__delayedDisconnect.start(seconds=5)
+
+ def stop(self):
+ self.__delayedDisconnect.cancel()
+
+ def _on_delayed_disconnect(self):
+ _moduleLogger.info("Timed disconnect occurred")
+ self._connRef().disconnect(telepathy.CONNECTION_STATUS_REASON_NETWORK_ERROR)
+
+
class AutoDisconnect(object):
def __init__(self, connRef):
self._delayedConnect = gobject_utils.Async(self._delayed_connect)
_moduleLogger.info("Connection to the account %s created" % account)
+ self._timedDisconnect = autogv.TimedDisconnect(weakref.ref(self))
+ self._timedDisconnect.start()
@property
def manager(self):
return
_moduleLogger.info("Kicking off connect")
self._delayedConnect.start()
+ self._timedDisconnect.stop()
@misc_utils.log_exception(_moduleLogger)
def _delayed_connect(self):
_moduleLogger.info("Disconnecting")
self._delayedConnect.cancel()
+ self._timedDisconnect.stop()
# Not having the disconnect first can cause weird behavior with clients
# including not being able to reconnect or even crashing