def testLocationHintExtensions(self): furl = "pb://%[email protected]:9900,udp:127.0.0.1:7700/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, [("ipv4", "127.0.0.1", 9900)]) self.failUnlessEqual(sr.getURL(), furl) furl = "pb://%s@udp:127.0.0.1:7700/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, []) self.failUnlessEqual(sr.getURL(), furl) furl = "pb://%[email protected]:7700:postextension/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, []) self.failUnlessEqual(sr.getURL(), furl)
def testLocationHintExtensions(self): furl = "pb://%[email protected]:9900,udp:127.0.0.1:7700/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, [("tcp", "127.0.0.1", 9900)]) self.failUnlessEqual(sr.getURL(), furl) furl = "pb://%s@udp:127.0.0.1:7700/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, []) self.failUnlessEqual(sr.getURL(), furl) furl = "pb://%[email protected]:7700:postextension/name" % TUB1 sr = SturdyRef(furl) self.failUnlessEqual(sr.locationHints, []) self.failUnlessEqual(sr.getURL(), furl)
def _getReference(self, sturdyOrURL): if isinstance(sturdyOrURL, SturdyRef): sturdy = sturdyOrURL else: sturdy = SturdyRef(sturdyOrURL) # pb->pb: ok, requires crypto # pbu->pb: ok, requires crypto # pbu->pbu: ok # pb->pbu: ok, requires crypto if sturdy.encrypted and not crypto_available: e = BananaError("crypto for PB is not available, " "we cannot handle encrypted PB-URLs like %s" % sturdy.getURL()) return defer.fail(e) if not self.running: # queue their request for service once the Tub actually starts log.msg("Tub.getReference(%s) queued until Tub.startService called" % sturdy, facility="foolscap.tub") d = defer.Deferred() self._pending_getReferences.append((d, sturdy)) return d name = sturdy.name d = self.getBrokerForTubRef(sturdy.getTubRef()) d.addCallback(lambda b: b.getYourReferenceByName(name)) return d
def _getReference(self, sturdyOrURL): if isinstance(sturdyOrURL, SturdyRef): sturdy = sturdyOrURL else: sturdy = SturdyRef(sturdyOrURL) # pb->pb: ok, requires crypto # pbu->pb: ok, requires crypto # pbu->pbu: ok # pb->pbu: ok, requires crypto if sturdy.encrypted and not crypto_available: e = BananaError("crypto for PB is not available, " "we cannot handle encrypted PB-URLs like %s" % sturdy.getURL()) return defer.fail(e) if not self.running: # queue their request for service once the Tub actually starts log.msg( "Tub.getReference(%s) queued until Tub.startService called" % sturdy, facility="foolscap.tub") d = defer.Deferred() self._pending_getReferences.append((d, sturdy)) return d name = sturdy.name d = self.getBrokerForTubRef(sturdy.getTubRef()) d.addCallback(lambda b: b.getYourReferenceByName(name)) return d