Todo: * Deal with known bugs (see bugs.txt). * Clean up code. See the comments at the top of samclasses.py. * Use a logger framework (perhaps Python module logging). * Deal with FIXME comments. * Unit tests for close then do something errors. Try closing a stream at one end, and make sure the other end gets all the data sent before closing. * Make an event-based socket class. (eg asyncore).