changeset 35976:f8f034344b39

sshpeer: clean up API for sshpeer.__init__ (API) Our refactoring left the state of sshpeer.__init__ in a poor state. "create" was no longer used. Process/pipe arguments were passed poorly. "name" was really a URL. This commit cleans all that up. .. api:: sshpeer.sshpeer.__init__ now receives arguments describing an existing connection instead of creating a connection itself. Differential Revision: https://phab.mercurial-scm.org/D2032
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 05 Feb 2018 14:17:24 -0800
parents 00b9e26d727b
children a9cffd14aa04
files mercurial/sshpeer.py tests/test-check-interfaces.py
diffstat 2 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/sshpeer.py	Mon Feb 05 14:05:59 2018 -0800
+++ b/mercurial/sshpeer.py	Mon Feb 05 14:17:24 2018 -0800
@@ -157,12 +157,21 @@
     return proc, stdin, stdout, stderr
 
 class sshpeer(wireproto.wirepeer):
-    def __init__(self, ui, path, create=False, sshstate=None):
-        self._url = path
+    def __init__(self, ui, url, proc, stdin, stdout, stderr):
+        """Create a peer from an existing SSH connection.
+
+        ``proc`` is a handle on the underlying SSH process.
+        ``stdin``, ``stdout``, and ``stderr`` are handles on the stdio
+        pipes for that process.
+        """
+        self._url = url
         self._ui = ui
         # self._subprocess is unused. Keeping a handle on the process
         # holds a reference and prevents it from being garbage collected.
-        self._subprocess, self._pipei, self._pipeo, self._pipee = sshstate
+        self._subprocess = proc
+        self._pipeo = stdin
+        self._pipei = stdout
+        self._pipee = stderr
 
         self._validaterepo()
 
@@ -386,6 +395,4 @@
     proc, stdin, stdout, stderr = _makeconnection(ui, sshcmd, args, remotecmd,
                                                   remotepath, sshenv)
 
-    sshstate = (proc, stdout, stdin, stderr)
-
-    return sshpeer(ui, path, create=create, sshstate=sshstate)
+    return sshpeer(ui, path, proc, stdin, stdout, stderr)
--- a/tests/test-check-interfaces.py	Mon Feb 05 14:05:59 2018 -0800
+++ b/tests/test-check-interfaces.py	Mon Feb 05 14:17:24 2018 -0800
@@ -69,8 +69,8 @@
     checkobject(badpeer())
     checkobject(httppeer.httppeer(ui, 'http://localhost'))
     checkobject(localrepo.localpeer(dummyrepo()))
-    checkobject(testingsshpeer(ui, 'ssh://localhost/foo', False,
-                               (None, None, None, None)))
+    checkobject(testingsshpeer(ui, 'ssh://localhost/foo', None, None, None,
+                               None))
     checkobject(bundlerepo.bundlepeer(dummyrepo()))
     checkobject(statichttprepo.statichttppeer(dummyrepo()))
     checkobject(unionrepo.unionpeer(dummyrepo()))