Mercurial > hg
changeset 37609:01bfe5ad0c53
httppeer: implement ipeerconnection
This is low hanging fruit. We might as well start somewhere.
Differential Revision: https://phab.mercurial-scm.org/D3254
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 11 Apr 2018 11:03:45 -0700 |
parents | fa4b39bb0a07 |
children | 98861a2298b5 |
files | mercurial/httppeer.py tests/test-check-interfaces.py |
diffstat | 2 files changed, 28 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/httppeer.py Thu Apr 12 13:25:54 2018 -0400 +++ b/mercurial/httppeer.py Wed Apr 11 11:03:45 2018 -0700 @@ -19,11 +19,15 @@ from .thirdparty import ( cbor, ) +from .thirdparty.zope import ( + interface as zi, +) from . import ( bundle2, error, httpconnection, pycompat, + repository, statichttprepo, url as urlmod, util, @@ -513,6 +517,7 @@ raise exception # TODO implement interface for version 2 peers +@zi.implementer(repository.ipeerconnection) class httpv2peer(object): def __init__(self, ui, repourl, apipath, opener, requestbuilder, apidescriptor): @@ -521,15 +526,32 @@ if repourl.endswith('/'): repourl = repourl[:-1] - self.url = repourl + self._url = repourl self._apipath = apipath self._opener = opener self._requestbuilder = requestbuilder self._descriptor = apidescriptor + # Start of ipeerconnection. + + def url(self): + return self._url + + def local(self): + return None + + def peer(self): + return self + + def canpush(self): + # TODO change once implemented. + return False + def close(self): pass + # End of ipeerconnection. + # TODO require to be part of a batched primitive, use futures. def _call(self, name, **args): """Call a wire protocol command with arguments.""" @@ -554,7 +576,7 @@ 'pull': 'ro', }[permission] - url = '%s/%s/%s/%s' % (self.url, self._apipath, permission, name) + url = '%s/%s/%s/%s' % (self._url, self._apipath, permission, name) # TODO this should be part of a generic peer for the frame-based # protocol.
--- a/tests/test-check-interfaces.py Thu Apr 12 13:25:54 2018 -0400 +++ b/tests/test-check-interfaces.py Wed Apr 11 11:03:45 2018 -0700 @@ -92,6 +92,10 @@ httppeer.httppeer) checkzobject(httppeer.httppeer(None, None, None, dummyopener(), None, None)) + ziverify.verifyClass(repository.ipeerconnection, + httppeer.httpv2peer) + checkzobject(httppeer.httpv2peer(None, '', None, None, None, None)) + ziverify.verifyClass(repository.ipeerbase, localrepo.localpeer) checkzobject(localrepo.localpeer(dummyrepo()))