Chromium Code Reviews| Index: build/android/adb_reverse_forwarder.py |
| diff --git a/build/android/adb_reverse_forwarder.py b/build/android/adb_reverse_forwarder.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..0bacdc500fe96326a0671506061147c6ba14da5b |
| --- /dev/null |
| +++ b/build/android/adb_reverse_forwarder.py |
| @@ -0,0 +1,68 @@ |
| +#!/usr/bin/env python |
| +# |
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +"""Command line tool for forwarding ports from a device to the host. |
| + |
| +Allows an Android device to connect to services running on the host machine, |
| +i.e., "adb forward" in reverse. Requires |host_forwarder| and |device_forwarder| |
| +to be built. |
| +""" |
| + |
| +import optparse |
| +import sys |
| +import time |
| + |
| +from pylib import android_commands, forwarder |
| +from pylib.utils import run_tests_helper |
| + |
| + |
| +def main(argv): |
| + parser = optparse.OptionParser(usage='Usage: %prog [options] device_port ' |
| + 'host_port [device_port_2 host_port_2] ...', |
| + description=__doc__) |
| + parser.add_option('-v', |
| + '--verbose', |
| + dest='verbose_count', |
| + default=0, |
| + action='count', |
| + help='Verbose level (multiple times for more)') |
| + parser.add_option('--device', |
| + help='Serial number of device we should use.') |
| + parser.add_option('--host', |
| + help='Host address to forward to from the host machine. ' |
| + '127.0.0.1 by default', default='127.0.0.1') |
| + parser.add_option('--debug', action='store_const', const='Debug', |
| + dest='build_type', default='Release', |
| + help='Use Debug build of host tools instead of Release.') |
| + |
| + options, args = parser.parse_args(argv) |
| + run_tests_helper.SetLogLevel(options.verbose_count) |
| + |
| + if len(args) < 2 or not len(args) % 2: |
| + parser.error('Need even number of port pairs') |
| + sys.exit(1) |
| + |
| + try: |
| + port_pairs = map(int, args[1:]) |
| + port_pairs = zip(port_pairs[::2], port_pairs[1::2]) |
| + except ValueError: |
| + parser.error('Bad port number') |
| + sys.exit(1) |
| + |
| + adb = android_commands.AndroidCommands(options.device) |
| + forwarder_instance = forwarder.Forwarder(adb, options.build_type) |
| + try: |
| + forwarder_instance.Run(port_pairs, None, options.host) |
| + while True: |
| + time.sleep(60) |
| + except KeyboardInterrupt: |
| + sys.exit(0) |
| + finally: |
| + forwarder_instance.Close() |
|
Philippe
2013/01/11 13:50:03
Forwarder::Close() should have been removed. It's
|
| + |
| + |
| +if __name__ == '__main__': |
| + main(sys.argv) |