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
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.