Skip to content
Snippets Groups Projects
Commit f913e90f authored by Gregory Szorc's avatar Gregory Szorc
Browse files

httppeer: use peer interface

This is similar to what we did to sshpeer. Quirks and all.

Differential Revision: https://phab.mercurial-scm.org/D337
parent 1f8460b5
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,7 @@
error,
httpconnection,
pycompat,
repository,
statichttprepo,
url,
util,
......@@ -86,7 +87,7 @@
resp.__class__ = readerproxy
class httppeer(wireproto.wirepeer):
class httppeer(wireproto.wirepeer, repository.legacypeer):
def __init__(self, ui, path):
self._path = path
self._caps = None
......@@ -100,9 +101,9 @@
# urllib cannot handle URLs with embedded user or passwd
self._url, authinfo = u.authinfo()
self.ui = ui
self.ui.debug('using %s\n' % self._url)
self._ui = ui
ui.debug('using %s\n' % self._url)
self._urlopener = url.opener(ui, authinfo)
self._requestbuilder = urlreq.request
......@@ -105,7 +106,10 @@
self._urlopener = url.opener(ui, authinfo)
self._requestbuilder = urlreq.request
# TODO remove once peerrepository isn't in inheritance.
self._capabilities = self.capabilities
def __del__(self):
urlopener = getattr(self, '_urlopener', None)
if urlopener:
......@@ -113,6 +117,12 @@
h.close()
getattr(h, "close_all", lambda : None)()
# Begin of _basepeer interface.
@util.propertycache
def ui(self):
return self._ui
def url(self):
return self._path
......@@ -116,5 +126,12 @@
def url(self):
return self._path
# look up capabilities only when needed
def local(self):
return None
def peer(self):
return self
def canpush(self):
return True
......@@ -120,4 +137,4 @@
def _fetchcaps(self):
self._caps = set(self._call('capabilities').split())
def close(self):
pass
......@@ -123,5 +140,9 @@
def _capabilities(self):
# End of _basepeer interface.
# Begin of _basewirepeer interface.
def capabilities(self):
if self._caps is None:
try:
self._fetchcaps()
......@@ -131,6 +152,13 @@
(' '.join(self._caps or ['none'])))
return self._caps
# End of _basewirepeer interface.
# look up capabilities only when needed
def _fetchcaps(self):
self._caps = set(self._call('capabilities').split())
def _callstream(self, cmd, _compressible=False, **args):
if cmd == 'pushkey':
args['data'] = ''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment