[swift-server-dev] HTTP Parser
me at helgehess.eu
Thu Nov 3 12:26:51 CDT 2016
On 03 Nov 2016, at 17:50, Logan Wright <logan at qutheory.io> wrote:
> Yup, you can see a lot of it in the underlying engine module from Vapor.
is it this one?:
that seems to be a pull based / blocking parser, right? That probably doesn’t work for a lot of environments.
Personally I’d suggest a small wrapper around this one:
It is small, fast, highly efficient, zero copy, push based, supports chunked&upgrade and is extremely well tested and widely deployed.
I also did a straight port of that to Swift, though if you can use the C version I wouldn't use the port as it is significantly slower (and may have extra bugs introduced during the port):
My approach here was to keep it close to the original, which makes for really ugly code :-)
I think it may be worthwhile to do another attempt of a port of the parser, but less 1:1 like mine, in a Swiftier way (the original uses a lot of goto’s :-).
As mentioned, I wouldn’t expect people to use the low level API but rather have nice objects filled by the underlying parser. What about `WORequest` & `WOResponse`? :-)
BTW: Something I consider important to discuss across all areas of interest (crypto, sockets, HTTP) is a protocol to represent a chunks of bytes and chunks of chunks of bytes (buckets and brigades in Apache terms). Of course that could be just NSData or DispatchData but I expect that some frameworks have their own way to represent such buffers, hence a protocol would be nice.
Why important? Well, because there needs to be a way to pass the data between those components w/o copying it :-)
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
More information about the swift-server-dev