LLUDP ClientStack

=Introduction=

These are draft notes on OpenSimulator's implementation of the LLUDP ClientStack, a chunk of code which is used to send and receive packets from viewers (clients) implementing the Linden Labs virtual environment protocol.

As such, this stack handles


 * Initial setup of an instance of the stack for a viewer.
 * Handling of inbound UDP messages from a connected viewer.
 * Sending of outbound UDP messages to a connected viewer.
 * Throttling of outbound messages.
 * Sending and receive of ack messages, both inline within other messages and as standalone messages.
 * Resending of messages that are marked as reliable but for which receipt has not been acknowledged by the viewer.
 * Throttling of outgoing UDP messages.
 * Pooling of clientstack structures (e.g. classes representing messages) in order to improve efficiency and reduce memory usage.

=Other references=


 * Sim Throttles contains very old information on the implementation of throttles. This has likely changed considerably but could still be useful.