Background: I had a discussion with a coworker who wanted to
have a single API to both streaming and datagram service; I
believe it makes more sense to define an API to a datagram
service and an API to a streaming service separately - the big
argument for PseudoTCP is the client-to-client connection
case, where one often finds that UDP works and TCP doesn't.
I had been thinking the datagram and streaming services
should use a single API - much of the API ends up being the
same, and that's how BSD sockets work. There are a few
differences for streaming services, but they are mostly
(entirely?) additive (flow control being the main one).