* A HUGE suite of API refactorings.
Too sweeping to report in detail, but the highlights are:
* abstract base classes now defined in m2wsgi.io.base, with concrete
implementations in m2wsgi.io.raw, m2wsgi.io.eventlet, etc.
* new class "Client" represents a client connection to which you can
send data; basically a (server id,conection id) tuple.
* new class "Handler" is a base class for handlers, with nothing
WSGI-specific. Maybe useful for writing custom handlers.
* different types of Connection now live in different classes, rather
than a single class with various socket-type switches.
* see m2wsgi.io.base.DispatcherConnection for an example.
* Socket identities are now specified as part of a single socket-spec
string, with a URL-like format, e.g: tcp://IDENTITYhost:port
* New "dispatcher" device replaces the old pull2xreq device:
* sends explicit pings to detect dead handler processes
* capable of flexible request routing
* supports "sticky sessions" out of the box
* New "response" device gives out easy canned responses.
* New "reaper" device implements simplistic request timeouts.
* added some utility middleware for use by the server:
* GZipMiddleware: gzip response bodies
* BufferMiddleware: buffer response bodies, for better compression