Skip to main content
Skip table of contents

(v13) Notification events

This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP


The simplest use for events is as a notification signal, allowing other systems to react to your system's actions without any direct linkage between them. For example, the RIP notifies interested parties of a job interpretation error with one line:

SwEvent(SWEVT_INTERPRET_ERROR, &error, sizeof(error)) ;

The HHR skin registers a handler for this Event in skinkit.c:

CPP
static sw_event_handlers error_handlers[] = {
        {job_error_handler, NULL, 0, SWEVT_INTERPRET_ERROR, SW_EVENT_DEFAULT},
        ...
};
...
        SwRegisterHandlers(error_handlers, NUM_ARRAY_ITEMS(error_handlers) ;


When it receives the notification Event, it extracts the details of the error:

CODE
static sw_event_result HQNCALL job_error_handler(void *context, sw_event *event)
{
        SWMSG_ERROR *msg = event->message;
        UNUSED_PARAM(void *, context);
        if (msg == NULL || event->length < sizeof(*msg))
                return SW_EVENT_CONTINUE;
        if (msg->fail_job && !controlData.fConfigJobFailed) {
                /* Capture error detail */
                controlData.fConfigJobFailed = TRUE;
                controlData.jobError.monuid = msg->error_monuid;
                ...
        }
        return SW_EVENT_CONTINUE;
}

Note that SW_EVENT_CONTINUE should usually be used by handlers of notification Events if the handler were to return SW_EVENT_HANDLED, no further handlers would be notified of the Event. This is likely to be a protocol error for a notification type Event as all handlers would need to know about it.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.