From 16760e06c3749e6ed3a0604b092b69fd8d805a4e Mon Sep 17 00:00:00 2001 From: SleepProgger Date: Fri, 11 Mar 2016 07:15:58 +0100 Subject: [PATCH 1/2] Added shortcut function for send_job and wait_event --- steam/client/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/steam/client/__init__.py b/steam/client/__init__.py index d3d317f..dd61e44 100644 --- a/steam/client/__init__.py +++ b/steam/client/__init__.py @@ -205,6 +205,39 @@ class SteamClient(EventEmitter, FeatureBase): return "job_%d" % jobid + def wait_for_job(self, message, timeout=None): + """ + Send a message as a job and waits for the response. + .. note:: + Not all messages are jobs, you'll have to find out which are which + + :param message: a message instance + :type message: :class:`steam.core.msg.Msg`, :class:`steam.core.msg.MsgProto` + :param timeout: how long to wait for a response (in seconds) + :type timeout: :class:`float` + :return: ``response`` + :rtype :class:`steam.core.msg.Msg`, :class:`steam.core.msg.MsgProto` + :raises: ``gevent.Timeout`` + """ + job_id = self.send_job(message) + return self.wait_event(job_id, timeout, raises=True)[0].body + + def wait_for_message(self, message, response_emsg, timeout=None): + """ + Send a message to CM and waits for a defined answer. + + :param message: a message instance + :type message: :class:`steam.core.msg.Msg`, :class:`steam.core.msg.MsgProto` + :param response_emsg: the answer to wait for (one of steam.enums.emsg.EMsg) + :type response_emsg: :class:`int` + :param timeout: how long to wait for a response (in seconds) + :type timeout: :class:`float` + :param message: a message instance + :raises: ``gevent.Timeout`` + """ + self.send(message) + return self.wait_event(response_emsg, timeout, raises=True)[0].body + def _pre_login(self): if self.logged_on: logger.debug("Trying to login while logged on???") From 8e469aa1f20a41d03f0db2ed964415ae3c1bdded Mon Sep 17 00:00:00 2001 From: SleepProgger Date: Fri, 11 Mar 2016 21:08:02 +0100 Subject: [PATCH 2/2] Changed wait_for_job names and added raises parameter --- steam/client/__init__.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/steam/client/__init__.py b/steam/client/__init__.py index dd61e44..0157808 100644 --- a/steam/client/__init__.py +++ b/steam/client/__init__.py @@ -205,7 +205,7 @@ class SteamClient(EventEmitter, FeatureBase): return "job_%d" % jobid - def wait_for_job(self, message, timeout=None): + def send_job_and_wait(self, message, timeout=None, raises=False): """ Send a message as a job and waits for the response. .. note:: @@ -220,9 +220,12 @@ class SteamClient(EventEmitter, FeatureBase): :raises: ``gevent.Timeout`` """ job_id = self.send_job(message) - return self.wait_event(job_id, timeout, raises=True)[0].body + response = self.wait_event(job_id, timeout, raises=raises) + if response is None: + return None + return response[0].body - def wait_for_message(self, message, response_emsg, timeout=None): + def send_message_and_wait(self, message, response_emsg, timeout=None, raises=False): """ Send a message to CM and waits for a defined answer. @@ -236,7 +239,10 @@ class SteamClient(EventEmitter, FeatureBase): :raises: ``gevent.Timeout`` """ self.send(message) - return self.wait_event(response_emsg, timeout, raises=True)[0].body + response = self.wait_event(response_emsg, timeout, raises=raises) + if response is None: + return None + return response[0].body def _pre_login(self): if self.logged_on: