"This isn't a professional opinion, but it's probably got enough internet to kill you." --glyph
This is a broker for proxies for and copies of objects. It provides a translucent interface layer to those proxies.
The protocol is not opaque, because it provides objects which represent the remote proxies and require no context (server references, IDs) to operate on.
It is not transparent because it does not attempt to make remote objects behave identically, or even similarly, to local objects. Method calls are invoked asynchronously, and specific rules are applied when serializing arguments.
To get started, begin with
|Class||Serializable||An object that can be passed remotely.|
|Class||Referenceable||No class docstring; 2/2 methods documented|
|Class||NoSuchMethod||Raised if there is no such remote method|
|Class||Root||I provide a root object to
|Interface||IPBRoot||Factory for root Referenceable objects for PB servers.|
|Class||ViewPoint||I act as an indirect reference to an object accessed through a
|Class||Viewable||I will be converted to a
|Class||Copyable||Subclass me to get copied each time you are returned from or passed to a remote method.|
|Class||Cacheable||A cached instance.|
|Class||RemoteCopy||I am a remote copy of a Copyable object.|
|Class||RemoteCache||A cache is a local representation of a remote
|Class||RemoteCacheObserver||I am a reverse-reference to the peer's
|Class||ProtocolError||This error is raised when an invalid protocol statement is received.|
|Class||DeadReferenceError||This error is raised when a method is called on a dead reference (one whose broker has been disconnected).|
|Class||Error||This error can be raised to generate known error conditions.|
|Class||RemoteError||This class is used to wrap a string-ified exception from the remote side to be able to reraise it. (Raising string exceptions is no longer possible in Python 2.6+)|
|Class||RemoteMethod||This is a translucent reference to a remote message.|
|Interface||IPerspective||per*spec*tive, n. : The relationship of aspects of a subject to each other and to a whole: 'a perspective of history'; 'a need to view the problem in the proper perspective'.|
|Class||Avatar||A default IPerspective implementor.|
|Class||AsReferenceable||A reference directed towards another object.|
|Class||RemoteReference||A translucent reference to a remote object.|
|Class||Local||(internal) A reference to a local object.|
|Class||Broker||I am a broker for objects.|
|Function||respond||Respond to a challenge.|
|Function||challenge||I return some random data.|
|Class||PBClientFactory||Client factory for PB brokers.|
|Class||PBServerFactory||Server factory for perspective broker.|
|Interface||IUsernameMD5Password||I encapsulate a username and a hashed password.|
|Class||_PortalRoot||Root object, used to login to portal.|
|Class||_JellyableAvatarMixin||Helper class for code which deals with avatars which PB must be capable of sending to a peer.|
|Class||_PortalWrapper||Root Referenceable object, used to login to portal.|
|Class||_PortalAuthChallenger||Called with response to password challenge.|
Respond to a challenge.
This is useful for challenge/response authentication.
I return some random data.