Index: third_party/buildbot_7_12/buildbot/pbutil.py |
diff --git a/third_party/buildbot_7_12/buildbot/pbutil.py b/third_party/buildbot_7_12/buildbot/pbutil.py |
deleted file mode 100644 |
index c53c5a03fdb557c9863a534b6d476834c0241d92..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/pbutil.py |
+++ /dev/null |
@@ -1,140 +0,0 @@ |
- |
-"""Base classes handy for use with PB clients. |
-""" |
- |
-from twisted.spread import pb |
- |
-from twisted.spread.pb import PBClientFactory |
-from twisted.internet import protocol |
-from twisted.python import log |
- |
-class NewCredPerspective(pb.Avatar): |
- def attached(self, mind): |
- return self |
- def detached(self, mind): |
- pass |
- |
-class ReconnectingPBClientFactory(PBClientFactory, |
- protocol.ReconnectingClientFactory): |
- """Reconnecting client factory for PB brokers. |
- |
- Like PBClientFactory, but if the connection fails or is lost, the factory |
- will attempt to reconnect. |
- |
- Instead of using f.getRootObject (which gives a Deferred that can only |
- be fired once), override the gotRootObject method. |
- |
- Instead of using the newcred f.login (which is also one-shot), call |
- f.startLogin() with the credentials and client, and override the |
- gotPerspective method. |
- |
- Instead of using the oldcred f.getPerspective (also one-shot), call |
- f.startGettingPerspective() with the same arguments, and override |
- gotPerspective. |
- |
- gotRootObject and gotPerspective will be called each time the object is |
- received (once per successful connection attempt). You will probably want |
- to use obj.notifyOnDisconnect to find out when the connection is lost. |
- |
- If an authorization error occurs, failedToGetPerspective() will be |
- invoked. |
- |
- To use me, subclass, then hand an instance to a connector (like |
- TCPClient). |
- """ |
- |
- def __init__(self): |
- PBClientFactory.__init__(self) |
- self._doingLogin = False |
- self._doingGetPerspective = False |
- |
- def clientConnectionFailed(self, connector, reason): |
- PBClientFactory.clientConnectionFailed(self, connector, reason) |
- # Twisted-1.3 erroneously abandons the connection on non-UserErrors. |
- # To avoid this bug, don't upcall, and implement the correct version |
- # of the method here. |
- if self.continueTrying: |
- self.connector = connector |
- self.retry() |
- |
- def clientConnectionLost(self, connector, reason): |
- PBClientFactory.clientConnectionLost(self, connector, reason, |
- reconnecting=True) |
- RCF = protocol.ReconnectingClientFactory |
- RCF.clientConnectionLost(self, connector, reason) |
- |
- def clientConnectionMade(self, broker): |
- self.resetDelay() |
- PBClientFactory.clientConnectionMade(self, broker) |
- if self._doingLogin: |
- self.doLogin(self._root) |
- if self._doingGetPerspective: |
- self.doGetPerspective(self._root) |
- self.gotRootObject(self._root) |
- |
- # oldcred methods |
- |
- def getPerspective(self, *args): |
- raise RuntimeError, "getPerspective is one-shot: use startGettingPerspective instead" |
- |
- def startGettingPerspective(self, username, password, serviceName, |
- perspectiveName=None, client=None): |
- self._doingGetPerspective = True |
- if perspectiveName == None: |
- perspectiveName = username |
- self._oldcredArgs = (username, password, serviceName, |
- perspectiveName, client) |
- |
- def doGetPerspective(self, root): |
- # oldcred getPerspective() |
- (username, password, |
- serviceName, perspectiveName, client) = self._oldcredArgs |
- d = self._cbAuthIdentity(root, username, password) |
- d.addCallback(self._cbGetPerspective, |
- serviceName, perspectiveName, client) |
- d.addCallbacks(self.gotPerspective, self.failedToGetPerspective) |
- |
- |
- # newcred methods |
- |
- def login(self, *args): |
- raise RuntimeError, "login is one-shot: use startLogin instead" |
- |
- def startLogin(self, credentials, client=None): |
- self._credentials = credentials |
- self._client = client |
- self._doingLogin = True |
- |
- def doLogin(self, root): |
- # newcred login() |
- d = self._cbSendUsername(root, self._credentials.username, |
- self._credentials.password, self._client) |
- d.addCallbacks(self.gotPerspective, self.failedToGetPerspective) |
- |
- |
- # methods to override |
- |
- def gotPerspective(self, perspective): |
- """The remote avatar or perspective (obtained each time this factory |
- connects) is now available.""" |
- pass |
- |
- def gotRootObject(self, root): |
- """The remote root object (obtained each time this factory connects) |
- is now available. This method will be called each time the connection |
- is established and the object reference is retrieved.""" |
- pass |
- |
- def failedToGetPerspective(self, why): |
- """The login process failed, most likely because of an authorization |
- failure (bad password), but it is also possible that we lost the new |
- connection before we managed to send our credentials. |
- """ |
- log.msg("ReconnectingPBClientFactory.failedToGetPerspective") |
- if why.check(pb.PBConnectionLost): |
- log.msg("we lost the brand-new connection") |
- # retrying might help here, let clientConnectionLost decide |
- return |
- # probably authorization |
- self.stopTrying() # logging in harder won't help |
- log.err(why) |