-
-def HasForwarder(buildtype=None):
- if not buildtype:
- return (HasForwarder(buildtype='Release') or
- HasForwarder(buildtype='Debug'))
- device_forwarder = os.path.join(
- constants.GetOutDirectory(build_type=buildtype),
- 'forwarder_dist', 'device_forwarder')
- host_forwarder = os.path.join(
- constants.GetOutDirectory(build_type=buildtype), 'host_forwarder')
- return os.path.exists(device_forwarder) and os.path.exists(host_forwarder)
-
-
-class Forwarder(object):
- def __init__(self, adb, *port_pairs):
- self._adb = adb.Adb()
- self._host_port = port_pairs[0].local_port
-
- new_port_pairs = [(port_pair.local_port, port_pair.remote_port)
- for port_pair in port_pairs]
-
- self._port_pairs = new_port_pairs
- if HasForwarder('Release'):
- constants.SetBuildType('Release')
- elif HasForwarder('Debug'):
- constants.SetBuildType('Debug')
- else:
- raise Exception('Build forwarder2')
- forwarder.Forwarder.Map(new_port_pairs, self._adb)
-
- @property
- def url(self):
- return 'http://127.0.0.1:%i' % self._host_port
-
- def Close(self):
- for (device_port, _) in self._port_pairs:
- forwarder.Forwarder.UnmapDevicePort(device_port, self._adb)