thomasvs - flumotion/trunk/doc/random
flumotion-commit at lists.fluendo.com
flumotion-commit at lists.fluendo.com
Wed Jan 24 10:36:25 CET 2007
Author: thomasvs
Date: Wed Jan 24 10:36:24 2007
New Revision: 4434
Removed:
flumotion/trunk/doc/random/pb
Modified:
flumotion/trunk/doc/random/twisted
Log:
fold pb into twisted
Modified: flumotion/trunk/doc/random/twisted
==============================================================================
--- flumotion/trunk/doc/random/twisted (original)
+++ flumotion/trunk/doc/random/twisted Wed Jan 24 10:36:24 2007
@@ -14,3 +14,75 @@
- use failure.getErrorMessage() to print a readable message
- use failure.value to get the value the original exception was created with
- use failure.type to get the class of exception this failure wraps
+pb.PBServerFactory:
+ - initialized with a twisted.cred.portal.Portal,
+ or any object adaptable to an IPBRoot (e.g. twisted.spread.pb._PortalRoot
+ - IPBRoot implementors have a self.rootObject(broker) method,
+ returning a root referenceable
+ - twisted.spread.pb registers an adapter of Portal to IPBRoot using _PortalRoot
+ - this takes the Portal, and returns a pb._PortalWrapper as the root object
+ - pb._PortalWrapper has a remote_login object that the pb client calls into,
+ giving the username
+
+PB login overview
+-----------------
+pb.PBClientFactory:
+ - gets .login(credentials, client) called
+ - calls self.getRootObject() and adds a deferred self._cbSendUsername to it
+ - returns the deferred it got, which will be called after completion of:
+ - _cbSendUsername
+ - _cbResponse
+ and this deferred will then receive a remote reference to the server's
+ perspective
+
+pb.PBServerFactory:
+ - the client's getRootObject triggers _PortalRoot's rootObject method,
+ returning the _PortalWrapper
+
+pb.PBClientFactory:
+ - _cbSendUsername receives
+ - a remote reference to _PortalWrapper, which is the root object
+ - the username and password of the client-side credentials
+ - _cbSendUsername calls the remote 'login' method *on the root reference*,
+ with the username, password, and client,
+ and adds a _cbResponse callback
+
+pb.PBServerFactory:
+ - remote_login is called on _PortalWrapper
+ - pb._PortalWrapper creates a challenge and a _PortalAuthChallenger
+ (inited with the portalwrapper, username, and challenge)
+ remote_login returns (challenge, challenger)
+ which will be returned to the pb.client over the wire
+
+pb.PBClientFactory:
+ - _cbResponse is called with
+ - (challenge, remote reference), which is the remote method's return value
+ where remote reference is a ref to the _PortalAuthChallenger
+ - password
+ - client
+ - it creates a response
+ - it calls remote 'respond' method *on the challenger reference*
+ with the response and the client
+
+pb.PBServerFactory:
+ - the server-side _PortalAuthChallenger gets a remote_respond method call
+ with (response, mind)
+ - it stores the response in itself
+ - it hands itself as credentials to the actual portal's login method:
+ (self, mind, IPerspective)
+ which returns a deferred returning (interface, avatarAspect, logout)
+ - it adds a _loggedIn callback to the login
+ - Portal.login() receives the credentials, which are now seeded with the
+ response
+ - so the Portal can pass the credentials to the credchecker
+ - the credchecker can call checkPassword on it
+ - the credchecker returns an avatarId, or raises an Unauthorized
+ - if an avatarId is returned, self._loggedIn gets called
+ with one argument, (interface, perspective, logout)
+ in the case of Unauthorized, the PB client gets the Unauthorized
+ - _loggedIn returns a referenceable perspective
+
+pb.PBClientFactory: (in case of success)
+ - gets _loggedIn called with the perspective
+ - whatever callback the client added to the login's deferred now gets
+ run with the reference to the perspective
More information about the flumotion-commit
mailing list