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.