protocol: convert StreamException to generated error code
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Fri, 16 Jul 2010 22:20:19 +0200
changeset 11624 67260651d09d
parent 11623 31d0a6d50ee2
child 11625 cdeb861335d5
protocol: convert StreamException to generated error code This makes it much easier to handle these errors at the transport level.
mercurial/streamclone.py
--- a/mercurial/streamclone.py	Fri Jul 16 22:20:10 2010 +0200
+++ b/mercurial/streamclone.py	Fri Jul 16 22:20:19 2010 +0200
@@ -6,16 +6,8 @@
 # GNU General Public License version 2 or any later version.
 
 import util, error
-
 from mercurial import store
 
-class StreamException(Exception):
-    def __init__(self, code):
-        Exception.__init__(self)
-        self.code = code
-    def __str__(self):
-        return '%i\n' % self.code
-
 # if server supports streaming clone, it advertises "stream"
 # capability with value that is version+flags of repo it is serving.
 # client only streams if it can read that repo format.
@@ -40,7 +32,8 @@
     writes to file-like object, must support write() and optional flush().'''
 
     if not allowed(repo.ui):
-        raise StreamException(1)
+        yield '1\n' # error: 1
+        return
 
     entries = []
     total_bytes = 0
@@ -55,9 +48,10 @@
         finally:
             lock.release()
     except error.LockError:
-        raise StreamException(2)
+        yield '2\n' # error: 2
+        return
 
-    yield '0\n'
+    yield '0\n' # success
     repo.ui.debug('%d files, %d bytes to transfer\n' %
                   (len(entries), total_bytes))
     yield '%d %d\n' % (len(entries), total_bytes)