[ENet-discuss] Prioritisation

The next (last?) big change I want to make to my version of ENet is to add
support for prioritisation of packets. Real-time data, like movement, will
be sent at a higher priority to non-realtime data, like chat. In order to do
this I need to modify ENet so that when sending it just requests packets one
at a time from a scheduler, which will be using an algorithm like Weighted
Fair Queuing to determine the next packet to send. Currently ENet's
scheduling seems to send reliable data based on sliding window space, then
unreliable data using a rate based scheme. What's the reasoning behind this
hybrid approach? It seems the best way to integrate prioritisation would be
to switch to a purely rate based approach where packets are sent at the
current sending rate. Does this approach sound feasible? The rate would be
adjusted based on conjestion and packet loss, with packets lost due to the
receivers processing rate just being folded in to sender based flow control.
As well as being more amenable to priority, it seems a rate based ENet would
also be simpler and it would be easier to reason about TCP friendliness. Any
thoughts?