Menu

Tree [f92c2e] master /
 History

HTTPS access


File Date Author Commit
 utils 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit
 .gitignore 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit
 InstanceProxy.py 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit
 InstanceServer.py 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit
 README.rst 2014-05-30 Paul Tunison Paul Tunison [f92c2e] Renamed README extension to rst
 ServerHub.py 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit
 __init__.py 2014-05-30 Paul Tunison Paul Tunison [03a268] Initial commit

Read Me

High-level Goal

Create a system where by an object, through some simple method, may be registered with the SharedObject system. After this registration, any initialization of an instance of the class instead creates a "proxy" object that is operable in the same way the class being proxied. This proxy object manages communication to and from the true instance of the initialized object which lived in a remote process relative to the location of proxy initialization.

Minimal constrained details:
  • ZeroMQ is to be used for communication.
  • Each concrete instance lives in its own discrete process, managed by a hub server process (reference counting, connection hand-shacking, etc.).

Basic Data Flow and Communication

When a class is based on the proxy-generating meta-class, the proxy class is registered with a centralized map of class-type -> proxy-type

Proxy instances:
  • mirrors available public methods and attributes of its parent object.
  • manage communication to a Hub process (ZMQ connection) of:
    • construction (ref count increase)
    • methods called on the proxy
    • Proxy destruction, or out of scope (ref count decrease)
  • when provided, receive info from the instance server (contains the concrete object instance)
  • must easy to transport (be pickle-able and otherwise support setstate/getstate functionality (hub server connection info, optional instance server connection info))
The Hub process
  • receives messages from Proxy objects
  • manages sub-processes encapsulating object instances
  • reference counts for objects
Instance Server processes
  • initialize and wrap a concrete instance of an object
  • receive messages from a parent Hub server about incoming object operations and where to send return products (connection information).
  • Return information sent directly to proxy object