summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pursehouse <david.pursehouse@gmail.com>2013-10-17 17:57:23 -0700
committerDavid Pursehouse <david.pursehouse@gmail.com>2013-10-17 17:57:23 -0700
commit915524869e5f9a9ebe62e4c14f5030ded2042111 (patch)
treea5d15064f021566e4e972798812c6ea422ec47de
parent626b04ef841aa887909f03ea06d4e4ced38c9164 (diff)
parent06c88c8a2edad6562ad43e63ec894b1ba59c3818 (diff)
downloadpygerrit-915524869e5f9a9ebe62e4c14f5030ded2042111.tar.gz
Merge pull request #13 from EnJens/master
Avoid busy loop when receiving incoming stream data.
-rw-r--r--pygerrit/stream.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/pygerrit/stream.py b/pygerrit/stream.py
index 37b09f1..1834d66 100644
--- a/pygerrit/stream.py
+++ b/pygerrit/stream.py
@@ -57,13 +57,17 @@ class GerritStream(Thread):
stdout = channel.makefile()
stderr = channel.makefile_stderr()
while not self._stop.is_set():
- if channel.exit_status_ready():
- if channel.recv_stderr_ready():
- error = stderr.readline().strip()
+ try:
+ if channel.exit_status_ready():
+ if channel.recv_stderr_ready():
+ error = stderr.readline().strip()
+ else:
+ error = "Remote server connection closed"
+ self._error_event(error)
+ self._stop.set()
else:
- error = "Remote server connection closed"
- self._error_event(error)
+ data = stdout.readline()
+ self._gerrit.put_event(data)
+ except Exception as e:
+ self._error_event(repr(e))
self._stop.set()
- elif channel.recv_ready():
- data = stdout.readline()
- self._gerrit.put_event(data)