Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: telemetry/telemetry/internal/forwarders/__init__.py

Issue 2267613002: Revert "[telemetry] Wire TsProxy through telemetry's network stack." (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: telemetry/telemetry/internal/forwarders/__init__.py
diff --git a/telemetry/telemetry/internal/forwarders/__init__.py b/telemetry/telemetry/internal/forwarders/__init__.py
index b11fbfeee761c930fa2016820168ed742546d1d3..45f92392028306132e4c369c1dfad9b604b18442 100644
--- a/telemetry/telemetry/internal/forwarders/__init__.py
+++ b/telemetry/telemetry/internal/forwarders/__init__.py
@@ -8,15 +8,36 @@ import collections
PortPair = collections.namedtuple('PortPair', ['local_port', 'remote_port'])
PortSet = collections.namedtuple('PortSet', ['http', 'https', 'dns'])
+class PortPairs(collections.namedtuple('PortPairs', ['http', 'https', 'dns'])):
+ __slots__ = ()
+
+ @classmethod
+ def Zip(cls, local_ports, remote_ports):
+ """Zip a pair of PortSet's into a single PortPairs object."""
+ with_dns = local_ports.dns is not None and remote_ports.dns is not None
+ return cls(
+ PortPair(local_ports.http, remote_ports.http),
+ PortPair(local_ports.https, remote_ports.https),
+ PortPair(local_ports.dns, remote_ports.dns) if with_dns else None)
+
+ @property
+ def local_ports(self):
+ """Return a tuple of local ports only."""
+ return PortSet(*[p.local_port if p is not None else None for p in self])
+
+ @property
+ def remote_ports(self):
+ """Return a tuple of remote ports only."""
+ return PortSet(*[p.remote_port if p is not None else None for p in self])
class ForwarderFactory(object):
- def Create(self, port_pair):
+ def Create(self, port_pairs):
"""Creates a forwarder that maps remote (device) <-> local (host) ports.
Args:
- port_pair: A PortPairs instance that consists of a PortPair mapping
+ port_pairs: A PortPairs instance that consists of a PortPair mapping
for each protocol. http is required. https and dns may be None.
"""
raise NotImplementedError()
@@ -28,22 +49,22 @@ class ForwarderFactory(object):
class Forwarder(object):
- def __init__(self, port_pair):
- assert port_pair, 'Port mapping is required.'
- self._port_pair = port_pair
+ def __init__(self, port_pairs):
+ assert port_pairs.http, 'HTTP port mapping is required.'
+ self._port_pairs = port_pairs
self._forwarding = True
@property
def host_port(self):
- return self._port_pair.remote_port
+ return self._port_pairs.http.remote_port
@property
def host_ip(self):
return '127.0.0.1'
@property
- def port_pair(self):
- return self._port_pair
+ def port_pairs(self):
+ return self._port_pairs
@property
def url(self):
@@ -51,5 +72,5 @@ class Forwarder(object):
return 'http://%s:%i' % (self.host_ip, self.host_port)
def Close(self):
- self._port_pair = None
+ self._port_pairs = None
self._forwarding = False

Powered by Google App Engine
This is Rietveld 408576698