Mercurial > hg-stable
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: