Port Throttling

From wiki.openlighting.org

Sometimes the frame rate from Output Ports has to be rate limited. The ThrottledOutputPortDecorator allows rate limits to be configured on OutputPorts using a Token Bucket Algorithm.

The following example shows applying the ThrottledOutputPortDecorator to an Output port to rate limit the output.

Before (no throttling):

OutputPort *output_port = new UsbProOutputPort(this, 0, "");

After (throttle to 190 frames per second)

OutputPort *output_port = new ThrottledOutputPortDecorator(
new UsbProOutputPort(this, 0, ""), // the port to throttle
plugin_adaptor->WakeUpTime(), // the select server wake up time
10, // start with 10 tokens in the bucket
190); // throttle to 190 frames per second

When port throttling is in place, messages will appear at log level 4 similar to: