Menu

Tree [8e1fe2] default tip /
 History

Read Only access


File Date Author Commit
 OLD_APPS 2008-05-09 Michael Demmer Michael Demmer [3bd1ce] more minor reorg
 apps 2008-05-09 Michael Demmer Michael Demmer [0c8426] more reorg
 core 2008-05-13 Michael Demmer Michael Demmer [8e1fe2] use the new dispatcher mechanism for the http p...
 news 2008-05-08 Michael Demmer Michael Demmer [1209c7] add rss publisher used for session paper
 wget 2008-04-04 Michael Demmer Michael Demmer [710caf] I'm not sure what that last snapshot was based ...
 .hgignore 2008-04-04 Michael Demmer Michael Demmer [268e68] whitespace cleanup
 Makefile 2008-04-04 Michael Demmer Michael Demmer [6a85d1] update Makefile since core and periodic don't b...
 README 2008-04-04 Michael Demmer Michael Demmer [710caf] I'm not sure what that last snapshot was based ...
 README.OLD 2008-03-28 Michael Demmer Michael Demmer [f78b1b] Import snapshot of API sources from Subversion
 Rules.make 2008-04-04 Michael Demmer Michael Demmer [710caf] I'm not sure what that last snapshot was based ...

Read Me

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.