102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | |
def new_remote(cls, gateway, hostport=None): |
""" return a new (connected) socket gateway, instatiated |
indirectly through the given 'gateway'. |
""" |
if hostport is None: |
host, port = ('', 0) |
else: |
host, port = hostport |
socketserverbootstrap = py.code.Source( |
mypath.dirpath('script', 'socketserver.py').read('rU'), """ |
import socket |
sock = bind_and_listen((%r, %r)) |
port = sock.getsockname() |
channel.send(port) |
startserver(sock) |
""" % (host, port) |
) |
|
channel = gateway.remote_exec(socketserverbootstrap) |
(realhost, realport) = channel.receive() |
|
|
return py.execnet.SocketGateway(host, realport) | |