Purpose of Alert Recipient Client
This example illustrates a UNIX client that receives notification of alert events from the Event Server. This requires an event loop because events are received asynchronously. A single client can send as well as receive events. See [xref text to replace] for other details that you can incorporate into this program.
Note: Note: You cannot use the API function SPD_MainLoop in client programs developed for Windows systems. For clients on Windows systems, use SPD_ProcessEvents, as illustrated in 2.2.
Code
void eventCallback (
SPD_eventTypeTP,
SPD_eventTP *,
SPD_passbackTP
);
main(
int argc,
char **argv
)
{
/* Initialize the API.
Application name = "alarm recipient"
No application qualifier.
*/
SPD_InitClient("alarm recipient", NULL);
/* Register a callback to handle alarm events.
No passback data is specified.
*/
SPD_HandleEvent(SPD_alarmEventCN, eventCallback, NULL);
/* Enter the SPD main loop to wait for the
receipt of alarm events.
*/
SPD_MainLoop();
}
/* Callback which handles alarm events */
void eventCallback(
SPD_eventTypeTP type, /* event type */
SPD_eventTP *event, /* event info */
SPD_passbackTP passback
)
{
char *severity;
int i;
/* Handle alarm events */
if (type == SPD_alarmEventCN) {
/* Display data that is common to all events */
printf("class=%s name=%s appl=%s applqual=%s\n",
event->objectClass,
event->objectName,
event->applicationName,
event->applicationQualifier);
/* Convert severity type to string */
switch (event->eventData.alarm.severity) {
case SPD_criticalCN:
severity = "critical";
break;
case SPD_majorCN:
severity = "major";
break;
/* etc. */
}
/* Display alarm event information */
printf("id=%s qual=%s severity=%s text=%s\n",
event->eventData.alarm.alarmIdentifier,
event->eventData.alarm.alarmQualifier,
severity,
event->eventData.alarm.alarmText); /* Display user defined attributes and their values */
for(i=0;<event-> variableCount; i++){
printf("Attribute name:%s\n",event->variableData[i].attribute);
printf("Attribute value:%s\n\n",event->variableData[i].value);
}
else {
/* Process other event types (or error if none registered) */
}
}Data Flow Diagram
This illustration shows the flow of information for the alert recipient client.