Events
The event system is used to communicate, filter, and observe events of global interest in a thread-safe manner.
The event system is a generalized callback system that enables events and associated message structures to be issued by an originator and received by multiple handlers, regardless of the location of originator and handlers. The event system can be used to connect parts of the application together in a flexible and sophisticated manner.
There are a number of ways of using the event system:
- Notification (signaling something to interested parties)
- Permission (allowing a system to prevent an action from occurring)
- Implementation (causing some action to occur, though not necessarily by one specific system)
- Some combination of the above.
These various idioms are described in detail in the usage documentation.
The event system is built on top of the RDR system and uses a number of RDR return values. It is a general-purpose API and may be of use to OEM code in addition to the described RIP uses.
What is an Event?
An event is a identified callback associated with an optional message that is delivered to multiple handlers registered for that type of Event, in a priority order.
Event handlers
An event handler is a callback function. Handlers may be registered for one or more event types, and can respond to the event by:
- Ignoring the event
- Processing the event in some way and passing it on to lower-priority handlers.
- Processing the event in some way and blocking lower-priority handlers.
- Returning an error.
The expected behavior of handlers, and how the RIP responds to errors reported by event handlers, is defined by the protocol for the specific event type.
Uses for Events by the RIP core
Text sent to the RIP's console or monitor window is delivered through a Monitor Event. Together with Timeline events, intercepting monitor events can enhance error reporting, and provide enhanced timing and progress information to OEM code.
The application or skin code can be used to cancel jobs by issuing interrupt events.
The external Harlequin VariData (eHVD) protocol for caching and reusing rasters is based on events, as documented in eHVD interface.