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

Unified Diff: third_party/twisted_8_1/twisted/names/srvconnect.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 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
« no previous file with comments | « third_party/twisted_8_1/twisted/names/server.py ('k') | third_party/twisted_8_1/twisted/names/tap.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/twisted_8_1/twisted/names/srvconnect.py
diff --git a/third_party/twisted_8_1/twisted/names/srvconnect.py b/third_party/twisted_8_1/twisted/names/srvconnect.py
deleted file mode 100644
index 8120d958795e0181b5061ab9a7ff26888c9159ec..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/names/srvconnect.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# -*- test-case-name: twisted.names.test.test_srvconnect -*-
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-import random
-
-from zope.interface import implements
-
-from twisted.internet import error, interfaces
-
-from twisted.names import client, dns
-from twisted.names.error import DNSNameError
-
-class _SRVConnector_ClientFactoryWrapper:
- def __init__(self, connector, wrappedFactory):
- self.__connector = connector
- self.__wrappedFactory = wrappedFactory
-
- def startedConnecting(self, connector):
- self.__wrappedFactory.startedConnecting(self.__connector)
-
- def clientConnectionFailed(self, connector, reason):
- self.__connector.connectionFailed(reason)
-
- def clientConnectionLost(self, connector, reason):
- self.__connector.connectionLost(reason)
-
- def __getattr__(self, key):
- return getattr(self.__wrappedFactory, key)
-
-class SRVConnector:
- """A connector that looks up DNS SRV records. See RFC2782."""
-
- implements(interfaces.IConnector)
-
- stopAfterDNS=0
-
- def __init__(self, reactor, service, domain, factory,
- protocol='tcp', connectFuncName='connectTCP',
- connectFuncArgs=(),
- connectFuncKwArgs={},
- ):
- self.reactor = reactor
- self.service = service
- self.domain = domain
- self.factory = factory
-
- self.protocol = protocol
- self.connectFuncName = connectFuncName
- self.connectFuncArgs = connectFuncArgs
- self.connectFuncKwArgs = connectFuncKwArgs
-
- self.connector = None
- self.servers = None
- self.orderedServers = None # list of servers already used in this round
-
- def connect(self):
- """Start connection to remote server."""
- self.factory.doStart()
- self.factory.startedConnecting(self)
-
- if not self.servers:
- if self.domain is None:
- self.connectionFailed(error.DNSLookupError("Domain is not defined."))
- return
- d = client.lookupService('_%s._%s.%s' % (self.service,
- self.protocol,
- self.domain))
- d.addCallbacks(self._cbGotServers, self._ebGotServers)
- d.addCallback(lambda x, self=self: self._reallyConnect())
- d.addErrback(self.connectionFailed)
- elif self.connector is None:
- self._reallyConnect()
- else:
- self.connector.connect()
-
- def _ebGotServers(self, failure):
- failure.trap(DNSNameError)
-
- # Some DNS servers reply with NXDOMAIN when in fact there are
- # just no SRV records for that domain. Act as if we just got an
- # empty response and use fallback.
-
- self.servers = []
- self.orderedServers = []
-
- def _cbGotServers(self, (answers, auth, add)):
- if len(answers) == 1 and answers[0].type == dns.SRV \
- and answers[0].payload \
- and answers[0].payload.target == dns.Name('.'):
- # decidedly not available
- raise error.DNSLookupError("Service %s not available for domain %s."
- % (repr(self.service), repr(self.domain)))
-
- self.servers = []
- self.orderedServers = []
- for a in answers:
- if a.type != dns.SRV or not a.payload:
- continue
-
- self.orderedServers.append((a.payload.priority, a.payload.weight,
- str(a.payload.target), a.payload.port))
-
- def _serverCmp(self, a, b):
- if a[0]!=b[0]:
- return cmp(a[0], b[0])
- else:
- return cmp(a[1], b[1])
-
- def pickServer(self):
- assert self.servers is not None
- assert self.orderedServers is not None
-
- if not self.servers and not self.orderedServers:
- # no SRV record, fall back..
- return self.domain, self.service
-
- if not self.servers and self.orderedServers:
- # start new round
- self.servers = self.orderedServers
- self.orderedServers = []
-
- assert self.servers
-
- self.servers.sort(self._serverCmp)
- minPriority=self.servers[0][0]
-
- weightIndex = zip(xrange(len(self.servers)), [x[1] for x in self.servers
- if x[0]==minPriority])
- weightSum = reduce(lambda x, y: (None, x[1]+y[1]), weightIndex, (None, 0))[1]
- rand = random.randint(0, weightSum)
-
- for index, weight in weightIndex:
- weightSum -= weight
- if weightSum <= 0:
- chosen = self.servers[index]
- del self.servers[index]
- self.orderedServers.append(chosen)
-
- p, w, host, port = chosen
- return host, port
-
- raise RuntimeError, 'Impossible %s pickServer result.' % self.__class__.__name__
-
- def _reallyConnect(self):
- if self.stopAfterDNS:
- self.stopAfterDNS=0
- return
-
- self.host, self.port = self.pickServer()
- assert self.host is not None, 'Must have a host to connect to.'
- assert self.port is not None, 'Must have a port to connect to.'
-
- connectFunc = getattr(self.reactor, self.connectFuncName)
- self.connector=connectFunc(
- self.host, self.port,
- _SRVConnector_ClientFactoryWrapper(self, self.factory),
- *self.connectFuncArgs, **self.connectFuncKwArgs)
-
- def stopConnecting(self):
- """Stop attempting to connect."""
- if self.connector:
- self.connector.stopConnecting()
- else:
- self.stopAfterDNS=1
-
- def disconnect(self):
- """Disconnect whatever our are state is."""
- if self.connector is not None:
- self.connector.disconnect()
- else:
- self.stopConnecting()
-
- def getDestination(self):
- assert self.connector
- return self.connector.getDestination()
-
- def connectionFailed(self, reason):
- self.factory.clientConnectionFailed(self, reason)
- self.factory.doStop()
-
- def connectionLost(self, reason):
- self.factory.clientConnectionLost(self, reason)
- self.factory.doStop()
-
« no previous file with comments | « third_party/twisted_8_1/twisted/names/server.py ('k') | third_party/twisted_8_1/twisted/names/tap.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698