The current code includes the following (in core/):
NetAPI.ice - ice interface for the core API
NetAPI_ice.py - ICE generated code
NetAPI_wrap.py - little wrappers to hide the fact that it's ice
SubManager.py - server-side implementation of the core API
SimpleNet.ice - ice interface for SimpleNet
SimpleNet_ice.py - ICE generated code for simplenet
SimpleNetClient.ice - client side simplenet implementation
SimpleNetServer.ice - server side simplenet implementation
There's also an example application in chat/Chat.py that implements a
multi-user chat with persistent message history.
---
To run/build, you need Ice 3.2.1 installed from http://www.zeroc.com
For the benefit of any debian (etch) users, I pre-built binary
packages since the distributed versions are too old. You can add the
following to your apt sources:
deb http://www.dtnrg.org/debian/ etch-testing contrib
Then install packages: python-zeroc-ice libzeroc-ice-dev slice2py
---
To run the system on a single host, make sure that core is in your
PYTHONPATH, then run:
% python SubManager.py
Then in some number of other shells run:
% python Chat.py foo:bar
% python Chat.py foo:bar
You should see input typed at one window appear in the other(s). If
you start a chat late, you should get all previous messages sent to
you.
---
To run on multiple hosts, you can use SimpleNet. Say the hosts are
named "alice" and "bob" and you want to run the SimpleNetServer on
bob:
bob% python SimpleNetServer.py
bob% python SubManager.py -h localhost
alice% python SubManager.py -h bob
Then on both bob and alice you can run chat and it should all get
relayed properly.
I'll try to keep a SimpleNetServer running on pisco.cs.berkeley.edu at
all times so if you want, you can just use that.
---
Limitations:
* The current prototype doesn't do any message versioning, so the
SubManager will simply queue up messages for publications forever.
* SimpleNet doesn't filter on publication ID, so all messages end up
going to all connected SubManager nodes.
* SimpleNet doesn't do any catch-up, so if messages were sent before
all SubManagers connected, they won't be relayed to all noes.