# HG changeset patch # User Gregory Szorc # Date 2018-09-26 22:53:49 # Node ID f5a05bb48116cc68e11c690b4254a1a87bdb78cf # Parent f80db6adabbe5c7c46da457f2be39b0655106ca8 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 diff --git a/mercurial/httppeer.py b/mercurial/httppeer.py --- a/mercurial/httppeer.py +++ b/mercurial/httppeer.py @@ -712,7 +712,7 @@ class httpv2executor(object): 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 diff --git a/mercurial/wireprotov2peer.py b/mercurial/wireprotov2peer.py --- a/mercurial/wireprotov2peer.py +++ b/mercurial/wireprotov2peer.py @@ -148,6 +148,7 @@ class clienthandler(object): 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 @@ class clienthandler(object): 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