From 2265b22651d164631ae2b0b9c7bfc08aa1a4faf7 Mon Sep 17 00:00:00 2001 From: Rossen Georgiev Date: Wed, 11 May 2016 15:04:51 +0100 Subject: [PATCH] CMClient: added retry param to connect() --- steam/core/cm.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/steam/core/cm.py b/steam/core/cm.py index 6a809cf..50a5e7f 100644 --- a/steam/core/cm.py +++ b/steam/core/cm.py @@ -72,8 +72,14 @@ class CMClient(EventEmitter): self._LOG.debug("Emit event: %s" % repr(event)) super(CMClient, self).emit(event, *args) - def connect(self): - """Initiate connection to CM. Blocks until we connect.""" + def connect(self, retry=None): + """Initiate connection to CM. Blocks until connected unless ``retry`` is specified. + + :param retry: number of retries before returning. Unlimited when set to ``None`` + :type retry: :class:`int` + :return: successful connection + :rtype: :class:`bool` + """ if self.connected: self._LOG.debug("Connect called, but we are connected?") return @@ -84,7 +90,10 @@ class CMClient(EventEmitter): self._LOG.debug("Connect initiated.") - for server_addr in self.servers: + for i, server_addr in enumerate(self.servers): + if retry is not None and i > retry: + return False + start = time() if self.connection.connect(server_addr): @@ -102,6 +111,7 @@ class CMClient(EventEmitter): self.emit("connected") self._recv_loop = gevent.spawn(self._recv_messages) self._connecting = False + return True def disconnect(self, reconnect=False, nodelay=False): """Close connection