Because calls to read data may return a variable amount of bytes, the interface
to calls that read data require an object that meets the requirements of
DynamicBuffer. This concept
is modeled on
The implementation does not perform queueing or buffering of messages. If desired, these features should be provided by callers. The impact of this design is that library users are in full control of the allocation strategy used to store data and the back-pressure applied on the read and write side of the underlying TCP/IP connection.