simplify the HttpParser interface
commit32b6e838c28b7948811a6470d8c0a49d5767ec69
authorEric Wong <normalperson@yhbt.net>
Tue, 24 Mar 2009 09:35:26 +0000 (24 02:35 -0700)
committerEric Wong <normalperson@yhbt.net>
Tue, 24 Mar 2009 09:44:20 +0000 (24 02:44 -0700)
tree016c38119477d56a839be8afc8ee702446c02b6b
parent7110a0dc380c53433e0b76496356abe7ccfa9021
simplify the HttpParser interface

This cuts the HttpParser interface down to #execute and #reset
method.  HttpParser#execute will return true if it completes and
false if it is not.  http->nread state is kept internally so we
don't have to keep track of it in Ruby; removing one parameter
from #execute.

HttpParser#reset is unchanged.

All errors are handled through exceptions anyways, so the
HttpParser#error? method stopped being useful.

Also added some more unit tests to the HttpParser since I know
some folks are (rightfully) uncomfortable with changing stable C
code.  We now have tests for incremental parsing.

In summary, we have:

  * more test cases
  * less C code
  * simpler interfaces
  * small performance improvement

  => win \o/
ext/unicorn/http11/http11.c
ext/unicorn/http11/http11_parser.c
ext/unicorn/http11/http11_parser.h
ext/unicorn/http11/http11_parser.rl
lib/unicorn/http_request.rb
test/unit/test_http_parser.rb