Mercurial > hg
changeset 40019:f5a05bb48116
wireprotov2: change name and behavior of readframe()
In the near future, we will want to support performing I/O from
other sources. Let's rename readframe() to readdata() and tweak
its logic to support future growth.
Differential Revision: https://phab.mercurial-scm.org/D4771
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 26 Sep 2018 15:53:49 -0700 |
parents | f80db6adabbe |
children | ed919b90acda |
files | mercurial/httppeer.py mercurial/wireprotov2peer.py |
diffstat | 2 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/httppeer.py Wed Sep 26 16:07:59 2018 -0700 +++ b/mercurial/httppeer.py Wed Sep 26 15:53:49 2018 -0700 @@ -712,7 +712,7 @@ def _handleresponse(self, handler, resp): # Called in a thread to read the response. - while handler.readframe(resp): + while handler.readdata(resp): pass # TODO implement interface for version 2 peers
--- a/mercurial/wireprotov2peer.py Wed Sep 26 16:07:59 2018 -0700 +++ b/mercurial/wireprotov2peer.py Wed Sep 26 15:53:49 2018 -0700 @@ -148,6 +148,7 @@ self._requests = {} self._futures = {} self._responses = {} + self._frameseof = False def callcommand(self, command, args, f): """Register a request to call a command. @@ -180,18 +181,23 @@ return meta['framegen'] - def readframe(self, fh): - """Attempt to read and process a frame. + def readdata(self, framefh): + """Attempt to read data and do work. - Returns None if no frame was read. Presumably this means EOF. + Returns None if no data was read. Presumably this means we're + done with all read I/O. """ - frame = wireprotoframing.readframe(fh) - if frame is None: - # TODO tell reactor? - return + if not self._frameseof: + frame = wireprotoframing.readframe(framefh) + if frame is None: + # TODO tell reactor? + self._frameseof = True + else: + self._ui.note(_('received %r\n') % frame) + self._processframe(frame) - self._ui.note(_('received %r\n') % frame) - self._processframe(frame) + if self._frameseof: + return None return True