Define a user event.
int srv_define_event(ssp, type, namep, namelen)
SRV_SERVER *ssp; CS_INT type; CS_CHAR *namep; CS_INT namelen;
A pointer to the Open Server control structure.
The type of event. Currently, programmer-defined events must be of type SRV_EQUEUED.
A pointer to the name of the event.
The length, in bytes, of string in *namep. If the string is null terminated, namelen can be CS_NULLTERM.
Returns |
To indicate |
---|---|
A non-zero integer |
The unique id for the vent. |
0 |
Open Server cannot define the event. Open Server raises an error. |
#include <ospublic.h>
/*
** Local Prototype
*/
CS_RETCODE ex_srv_define_event PROTOTYPE((
CS_CHAR *namep,
CS_INT namelen,
CS_INT *event_no
));
/*
** EX_SRV_DEFINE_EVENT
**
** Example routine to illustrate the use of srv_define_event to
** define an user event.
**
** Arguments:
** namep A pointer to the name of event.
** namelen The length, in bytes, of string in *namep.
** event_no A CS_INT pointer that is initialized with
** the unique number for the event.
** Returns:
**
** CS_SUCCEED If the event was defined successfully.
** CS_FAIL An error was detected.
*/
CS_RETCODE ex_srv_define_event(namep, namelen, event_no)
CS_CONTEXT *cp;
CS_VOID *bufp;
CS_CHAR *namep;
CS_INT namelen;
CS_INT *event_no;
CS_INT result;
{
SRV_PROC *srvproc_ptr; /* A pointer to an internal thread
** control structure */
result = srv_props(cp, CS_GET, SRV_S_CURTHREAD,
bufp, sizeof(CS_INT));
if (result == CS_FAIL)
{
return (CS_FAIL);
}
/* Now define the event. */
if ((*event_no = srv_define_event(srvproc_ptr, SRV_EQUEUED,
namep, namelen)) == (CS_INT)0)
return (CS_FAIL);
return (CS_SUCCEED);
}
Programmer-defined events are triggered by calling srv_event rather than by client actions. The Open Server programmer provides a handler routine that executes when the event is triggered.
Event handlers for programmer-defined events are installed in the usual way, with srv_handle.
Handlers for programmer-defined events receive a pointer to the thread control structure for the thread that received the event.
Events cannot be defined unless the Open Server application has been configured to allow programmer-defined events. For details, see the srv_props reference page.
srv_event, srv_event_deferred, srv_handle, srv_props, “Events”