Monitoring Event State

Purpose of Monitoring Event State Client

This example illustrates a client that monitors the state of the Event Server for specific events. The Event Server has various internal components that handle the routing of events. A client program can register a callback to track the availability of these internal components based upon the event type.

Code

void eventStateCallback (
   SPD_eventTypeTP,
   SPD_eventStateTP,
   SPD_passbackTP
);
main (
   int argc,
   char **argv
)
{
   /* Initialize the API.
      Application name = "event state example".
      No application qualifier.
   */
   SPD_InitClient("event state example", NULL);
 
   /* Monitor the state of alarm events */
   SPD_MonitorEventState(SPD_alarmEventCN, eventStateCallback,
      NULL);
 
   /* Monitor the state of log events */
   SPD_MonitorEventState(SPD_logEventCN, eventStateCallback, NULL);
}
 
/* Callback which handles event state changes */
void eventStateCallback(
   SPD_eventTypeTP  event,       /* Type of event */
   SPD_eventStateTP state,       /* New state of event */
   SPD_passbackTP  passback      /* Passback data */
)
{
   switch (event) {
 
      case SPD_alarmEventCN:
 
         switch (state) {
 
            case SPD_eventUpCN:
               /* Alarm events are up, i.e., they may be sent and
                  received.
               */
               break;
 
            case SPD_eventDownCN:
               /* Alarm events are down, i.e., it is not possible
                  to send or receive them.
               */
               break;
          }
 
      case SPD_logEventCN:
         switch (state) {
 
            case SPD_eventUpCN:
               /* Log events are up, i.e., it is possible
                  to log a message with Operations Sentinel (SPO) logging.
               */
               break;
 
            case SPD_eventDownCN:
               /* Log events are down, i.e., it is not possible
                  to log a message with Operations Sentinel (SPO) logging.
               */
               break;
         }
   }
}