CEventPump Prototype

The event pump keeps a queue of pending events, processing them on-demand.

Syntax

var object = new CEventPump(eventsPerStep);

Arguments

ArgumentSummary
eventsPerStep

Remarks

You should never need to create an instance of this prototype; access the event pump through client.eventPump. Most code should only need to use the addHook, getHook and removeHookByName methods.

Members

MemberSummary
addBulkEvent
addEvent
addHook Adds an event hook to be called when matching events are processed.
getHook Finds and returns data about a named event hook.
onHook
removeHookByIndex
removeHookByName Removes an existing event hook by its name.
routeEvent
stepEvents

See Also

Source Code

function CEventPump (eventsPerStep)
{
/* event routing stops after this many levels, safety valve */
this.MAX_EVENT_DEPTH = 50;
/* When there are this many 'used' items in a queue, always clean up. At
* this point it is MUCH more effecient to remove a block than a single
* item (i.e. removing 1000 is much much faster than removing 1 item 1000
* times [1]).
*/
this.FORCE_CLEANUP_PTR = 1000;
/* If there are less than this many items in a queue, clean up. This keeps
* the queue empty normally, and is not that ineffecient [1].
*/
this.MAX_AUTO_CLEANUP_LEN = 100;
this.eventsPerStep = eventsPerStep;
this.queue = new Array();
this.queuePointer = 0;
this.bulkQueue = new Array();
this.bulkQueuePointer = 0;
this.hooks = new Array();
/* [1] The delay when removing items from an array (with unshift or splice,
* and probably most operations) is NOT perportional to the number of items
* being removed, instead it is proportional to the number of items LEFT.
* Because of this, it is better to only remove small numbers of items when
* the queue is small (MAX_AUTO_CLEANUP_LEN), and when it is large remove
* only large chunks at a time (FORCE_CLEANUP_PTR), reducing the number of
* resizes being done.
*/
}