Hello Mongrel Users, I'm writing a web server called Ebb. It's written in C, makes use of the Mongrel HTTP parser, and uses libev its event loop. The goal is to be small, fast, and language independent server that can host web frameworks. I have written a small Ruby binding which provides a Rack handler - this will allow Ebb to host Rails, Merb, and other Ruby frameworks. In the future I will write a Python WSGI binding.
The design is similar to the evented Mongrel web server. Connections are processed as follows: 1. libev loops and waits for incoming connections. 2. When Ebb can read from a client socket, it passes the buffer into the mongrel state machine which parses the headers into name value pairs. 3. Ebb starts a new thread and passes the request information and peer socket to a user supplied callback. The thread lasts only for the length of that callback. 4. The included Ruby binding, supplying this callback transforms the request into a Rack compatible "env" variable and passes it on a Rack adapter. The code measures in at less than 1000 lines of C code. There is much work to do; it is not ready for use. I am soliciting help from the community for testing and development. You may browse the git repository at http://repo.or.cz/w/ebb.git or check out the code with this command: git clone git://repo.or.cz/ebb.git I release Ebb under the MIT license. It is very fun to program Ebb so I suggest you do too :) Ry Dahl _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users