Add an event request to a thread’s request-handling queue.
CS_INT srv_event(spp, event, datap)
SRV_PROC *spp; CS_INT event; CS_VOID *datap;
A pointer to an internal thread control structure.
The token for the event to add to the client’s event queue. See “Events” for a list of defined events.
A pointer (CS_VOID) to data supplied by the Open Server programmer. An application can retrieve the data by calling srv_thread_props with property set to SRV_T_EVENTDATA, from within the event handler.
Returns |
To indicate |
---|---|
The token for the requested event. |
Open Server added the new event. |
CS_FAIL |
The routine failed. |
#include <ospublic.h>
/*
** Local Prototype
*/
CS_RETCODE ex_srv_event PROTOTYPE((
SRV_PROC *spp,
CS_INT event,
CS_VOID *datap
));
/*
** EX_SRV_EVENT
**
** Example routine to queue an event request to an Open Server
** thread’s request-handling queue.
**
** Note that if the event is an user-defined one, it
** must have been defined earlier using srv_define_event.
**
** Arguments:
** spp A pointer to a control structure for an Open
** Server thread.
** event The token for the event to be added to the queue.
** datap Data pointer.
**
** Returns:
**
** CS_SUCCEED The event was queued successfully
** CS_FAIL An error was detected.
*/
CS_RETCODE ex_srv_event(spp, event, datap)
SRV_PROC *spp;
CS_INT event;
CS_VOID *datap;
{
if (srv_event(spp, event, datap) == CS_FAIL)
return (CS_FAIL);
else
return (CS_SUCCEED);
}
Add an event request to the event queue of a particular client thread. Event requests are usually added to a event request queue automatically, for example, by Client-Library calls from the client application. However, Open Server programmers can specifically add requests with srv_event.
The following events can be added to an event queue by srv_event:
SRV_DISCONNECT
SRV_URGDISCONNECT
SRV_STOP
Programmer-defined events
srv_handle tells Open Server which event handler to call when an event occurs. If no handler is defined for a particular event, the default Open Server event handler is called.
The SRV_URGDISCONNECT event causes an Open Server application’s SRV_DISCONNECT event handler to be called.
The SRV_URGDISCONNECT event is queued as an urgent event. This allows an application to place a disconnect event at the top of a thread’s event queue, skipping any currently queued events. This is useful to implement immediate termination of an Open Server thread.
If the event is programmer-defined, it must first be defined with srv_define_event before it can be triggered.
srv_event adds any event except SRV_STOP or SRV_START to a thread’s event queue. In the case of a SRV_STOP or SRV_START event, spp points to the internal thread control structure for the thread requesting the event.
An Open Server application cannot call any routine that does I/O from inside a user-defined event.
WARNING! In interrupt-level code, use srv_event_deferred instead of srv_event.
srv_define_event, srv_handle, srv_event_deferred, srv_thread_props, “Events”