Package twisted :: Package sibling :: Module loginserv :: Class LoginService
[frames | no frames]

Class LoginService

      Accessor --+            
                 |            
     Versioned --+            
                 |            
ApplicationService --+        
                     |        
               Service --+    
                         |    
                   Service --+
                             |
                            LoginService


The Sibling Login service. This service knows how to load clients. The login sequence for a client is: later on:

This service should run in the same process as a twisted.mother service. The mother service handles logins from siblings while this LoginService handles logins from clients.

This service enforces a single simultaneous login per-identity.
Method Summary
  __init__(self, name, application, motherService)
  _cbPerspective(self, perspective)
  getPerspectiveForIdentity(self, name, identity)
Fail if the player is already on-line.
  loadIdentityForSibling(self, sibling, name, identity)
Utility method for loading the remote identity once it is known which sibling the identity should be loaded on.
  loadLoginPerspective(self, name, identity)
This must return a deferred that yields a perspective object.
    Inherited from Service
  addPerspective(self, perspective)
Add a perspective to this Service.
  cachePerspective(self, perspective)
Cache a perspective loaded from an external data source.
  createPerspective(self, name)
Create a perspective from self.perspectiveClass and add it to this service.
  getPerspectiveNamed(self, name)
Return a perspective that represents a user for this service.
  getPerspectiveRequest(self, name)
Return a Deferred which is a request for a perspective on this service.
  getServiceName(self)
The name of this service.
  getServiceType(self)
Get a string describing the type of this service.
Deferred Perspective loadPerspective(self, name)
Load a perspective from an external data-source.
  setServiceParent(self, parent)
  uncachePerspective(self, perspective)
Uncache a perspective loaded from an external data source.
    Inherited from ApplicationService
  disownServiceParent(self)
Have my parent disown me.
  get_application(self)
  set_application(self, application)
  setApplication(self, application)
  startService(self)
This call is made as a service starts up.
  stopService(self)
This call is made before shutdown.
  upgradeToVersion1(self)
    Inherited from Accessor
  __delattr__(self, k)
  __getattr__(self, k)
  __setattr__(self, k, v)
  reallyDel(self, k)
*actually* del self.k without incurring side-effects.
  reallySet(self, k, v)
*actually* set self.k to v without incurring side-effects.
    Inherited from Versioned
  __getstate__(self, dict)
Get state, adding a version number to it on its way out.
  __setstate__(self, state)
  versionUpgrade(self)
(internal) Do a version upgrade.

Class Variable Summary
    Inherited from Service
NoneType serviceName = None                                                                  
NoneType serviceType = None                                                                  
    Inherited from ApplicationService
int persistenceVersion = 1                                                                     
NoneType serviceParent = None                                                                  
int serviceRunning = 0                                                                     
    Inherited from Versioned
tuple persistenceForgets = ()

Method Details

getPerspectiveForIdentity(self, name, identity)

Fail if the player is already on-line.
Overrides:
twisted.cred.service.Service.getPerspectiveForIdentity

loadIdentityForSibling(self, sibling, name, identity)

Utility method for loading the remote identity once it is known which sibling the identity should be loaded on. Should be called from within the loadLoginPerspective block.

This returns (ticket, host, port, sibling) which must be used by the client to login to the sibling server.

loadLoginPerspective(self, name, identity)

This must return a deferred that yields a perspective object. Within this block, loadIdentityForSibling should be called. This block of functionality is broken out like this so that the decision as to which sibling to load the perspective on can be deferred, as well as the loading of the perspective itself being deferred.

example:
   def loadLoginPerspective(self, name, identity):
       d1 = defer.Deferred()
       sibling = choice(self.motherService.siblings)
       d2 = self.loadIdentityForSibling(sibling, name, identity)
       d2.addCallback(self._cbTicket, name, d1)
       return d1

   def _cbTicket(self, data, name, d1):
       newPerspective = MyPerspective(name)
       p.setTicket(data)
       d1.callback(newPerspective)
In the example, the choosing of sibling servers is not asychronous, but this framework allows it to be.

Generated by Epydoc 2.0 on Sat Sep 13 04:20:40 2003 http://epydoc.sf.net