Mercurial > python-hglib
comparison hglib/client.py @ 191:6987d6cd420c
client: raise ResponseError in _readchannel()
Make it clearer that this is an unrecoverable communication error.
ServerError alone is not always unrecoverable, as CapabilityError is considered
a subtype of it.
This way, a caller can check for ResponseError to identify errors that require
reopening the client to recover.
author | Gábor Stefanik <gabor.stefanik@nng.com> |
---|---|
date | Mon, 21 Aug 2017 17:13:37 +0200 |
parents | f38bc0569671 |
children | 7a84a8656679 |
comparison
equal
deleted
inserted
replaced
190:f38bc0569671 | 191:6987d6cd420c |
---|---|
138 | 138 |
139 def _readchannel(self): | 139 def _readchannel(self): |
140 data = self.server.stdout.read(hgclient.outputfmtsize) | 140 data = self.server.stdout.read(hgclient.outputfmtsize) |
141 if not data: | 141 if not data: |
142 self.close() | 142 self.close() |
143 raise error.ServerError() | 143 raise error.ResponseError('no response received from server') |
144 channel, length = struct.unpack(hgclient.outputfmt, data) | 144 channel, length = struct.unpack(hgclient.outputfmt, data) |
145 if channel in b('IL'): | 145 if channel in b('IL'): |
146 return channel, length | 146 return channel, length |
147 else: | 147 else: |
148 return channel, self.server.stdout.read(length) | 148 return channel, self.server.stdout.read(length) |