changeset 36108:90ca4986616c

wireprotoserver: rename getfile() to forwardpayload() (API) "file" can mean a lot of things. Let's rename the interface method to something more descriptive. While I was here, I moved the docs about the payload format to the implementation of the SSH protocol, because it was lying about what the HTTP payload looked like. Differential Revision: https://phab.mercurial-scm.org/D2085
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 01 Feb 2018 17:12:07 -0800
parents 957e773614d0
children 038bcb759b75
files hgext/largefiles/proto.py mercurial/wireproto.py mercurial/wireprotoserver.py
diffstat 3 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/largefiles/proto.py	Wed Feb 07 20:24:22 2018 -0800
+++ b/hgext/largefiles/proto.py	Thu Feb 01 17:12:07 2018 -0800
@@ -40,7 +40,7 @@
         tmpfp = util.atomictempfile(path, createmode=repo.store.createmode)
 
         try:
-            proto.getfile(tmpfp)
+            proto.forwardpayload(tmpfp)
             tmpfp._fp.seek(0)
             if sha != lfutil.hexsha1(tmpfp._fp):
                 raise IOError(0, _('largefile contents do not match hash'))
--- a/mercurial/wireproto.py	Wed Feb 07 20:24:22 2018 -0800
+++ b/mercurial/wireproto.py	Thu Feb 01 17:12:07 2018 -0800
@@ -1008,7 +1008,7 @@
             fp = os.fdopen(fd, pycompat.sysstr('wb+'))
             r = 0
             try:
-                proto.getfile(fp)
+                proto.forwardpayload(fp)
                 fp.seek(0)
                 gen = exchange.readbundle(repo.ui, fp, None)
                 if (isinstance(gen, changegroupmod.cg1unpacker)
--- a/mercurial/wireprotoserver.py	Wed Feb 07 20:24:22 2018 -0800
+++ b/mercurial/wireprotoserver.py	Thu Feb 01 17:12:07 2018 -0800
@@ -64,14 +64,10 @@
         returns a list of values (same order as <args>)"""
 
     @abc.abstractmethod
-    def getfile(self, fp):
-        """write the whole content of a file into a file like object
+    def forwardpayload(self, fp):
+        """Read the raw payload and forward to a file.
 
-        The file is in the form::
-
-            (<chunk-size>\n<chunk>)+0\n
-
-        chunk size is the ascii version of the int.
+        The payload is read in full before the function returns.
         """
 
     @abc.abstractmethod
@@ -145,7 +141,7 @@
         args.update(cgi.parse_qs(argvalue, keep_blank_values=True))
         return args
 
-    def getfile(self, fp):
+    def forwardpayload(self, fp):
         length = int(self._req.env[r'CONTENT_LENGTH'])
         # If httppostargs is used, we need to read Content-Length
         # minus the amount that was consumed by args.
@@ -392,7 +388,12 @@
                 data[arg] = val
         return [data[k] for k in keys]
 
-    def getfile(self, fpout):
+    def forwardpayload(self, fpout):
+        # The file is in the form:
+        #
+        # <chunk size>\n<chunk>
+        # ...
+        # 0\n
         _sshv1respondbytes(self._fout, b'')
         count = int(self._fin.readline())
         while count: