buf - The buffer. Invokers of receive() must ensure that the contents of buf are not overwritten, e.g. by
copying it if a buffer is reused. The application can therefore hang on to buf as long as it needs to.
When buf is not referenced any longer, it can get garbage collected.
offset - The offset at which the received data starts
length - The length of the received data
public void receive(A sender,
The default implementation assumes that Buffer.flip() or Buffer.rewind() was called on
buf before invoking this callback