It looks like uSockets is going to implement all 4 protocols - why? Because QUIC definitely belongs here, so why have HTTP3 in uSockets and not in some higher level module?
Because HTTP3 is really just a small format atop QUIC and is already implemented in lsquic with pretty much the same interface as QUIC. The only "extension" HTTP3 brings over QUIC is the ability to read and write headers, and headers are just key/values so that "extension" is easily exposed.
This way the concept becomes - you establish a socket context of "protocol type h3", then you read and write data just like over any other protocol (that data being body data in and out).
So HTTP3 is seen more like a low level transport rather than some high level application thingy. Therefore it makes sense to have it implemented in uSockets.
This also means upper levels (uWebSockets) can implement HTTP3 and WebTransport pretty easily.
Note to self and whomever is interested;
It looks like uSockets is going to implement all 4 protocols - why? Because QUIC definitely belongs here, so why have HTTP3 in uSockets and not in some higher level module?
Because HTTP3 is really just a small format atop QUIC and is already implemented in lsquic with pretty much the same interface as QUIC. The only "extension" HTTP3 brings over QUIC is the ability to read and write headers, and headers are just key/values so that "extension" is easily exposed.
This way the concept becomes - you establish a socket context of "protocol type h3", then you read and write data just like over any other protocol (that data being body data in and out).
So HTTP3 is seen more like a low level transport rather than some high level application thingy. Therefore it makes sense to have it implemented in uSockets.
This also means upper levels (uWebSockets) can implement HTTP3 and WebTransport pretty easily.