Purpose of Command Submission Client
This example illustrates a client that submits a command to a host system in response to an attribute change event.
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. However, the destination of the command submitted by SPD_Command cannot be a Windows host.
Code
void commandCallback ( char *, char *, char *, void *, SPD_commandStatusTP, SPD_passbackTP ); void eventCallbackTP ( SPD_eventTypeTP, SPD_eventTP *, SPD_passbackTP ); main( int argc, char **argv ) { /* Initialize the API. Application name = "command submission example" No application qualifier. */ SPD_InitClient("command submission example", NULL); /* Register a callback to handle attribute change events. No passback data is specified. */ SPD_HandleEvent(SPD_attributeChangeEventCN, eventCallback, NULL); /* Enter the SPD main loop to wait for the receipt of data. */ SPD_MainLoop(); } /* Callback which handles attribute change events */ void eventCallback( SPD_eventTypeTP type, /* event type */ SPD_eventTP *event, /* event info */ SPD_passbackTP passback ) { char *severity; /* Handle attribute change events */ if (type == SPD_attributeChangeEventCN) { /* Determine if attribute change means a command should be sent */ /* Send a "who" command to the host that reported the attribute change. Register callback for command ack */ SPD_Command("host", event->host, "who", SPD_reservedValueCN, commandCallback, NULL, NULL, NULL, 0); } else { /* Process other event types (or error if none registered) */ } } /* Callback for command acknowledgment */ void commandCallback( char *class, /* class of the destination host */ char *host, /* destination of the command */ char *command, /* the command */ void *res, /* reserved for future use */ SPD_commandStatusTP status, /* command submission status */ SPD_passbackTP passback /* passback data */ ) { switch (status) { case SPD_commandSuccessCN: /* command was submitted */ break; case SPD_unknownHostCN: case SPD_unreachableHostCN: /* something went wrong - command did not make it */ break; } }
Data Flow Diagram
This illustration shows the flow of information for the command submission client.