# HG changeset patch # User Dirkjan Ochtman # Date 1279311619 -7200 # Node ID 67260651d09d5234edefebe6f5d6d20c8e941c60 # Parent 31d0a6d50ee2a3facaac487becdaf2f483256bb8 protocol: convert StreamException to generated error code This makes it much easier to handle these errors at the transport level. diff -r 31d0a6d50ee2 -r 67260651d09d 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)