changeset 11624:67260651d09d

protocol: convert StreamException to generated error code This makes it much easier to handle these errors at the transport level.
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Fri, 16 Jul 2010 22:20:19 +0200
parents 31d0a6d50ee2
children cdeb861335d5
files mercurial/streamclone.py
diffstat 1 files changed, 5 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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)