Provides a list of services from which the specified context receives events.
DWORD ctaSetEventSources ( CTAHD ctahd, char *svcname, unsigned nsvcs)
Argument |
Description |
ctahd |
Context handle. |
svcname |
Pointer to an array containing a list of services from which the application receives events. |
nsvcs |
Number of services in the svcname list. |
Return value |
Description |
SUCCESS |
|
CTAERR_BAD_ARGUMENT |
Invalid svcname was specified. |
CTAERR_INVALID_CTAHD |
An invalid context handle was passed as an argument to a function, or the context was destroyed by another thread. |
CTAERR_NOT_IMPLEMENTED |
Function is not available in the execution mode associated with the specified context. |
CTAERR_NOT_INITIALIZED |
Natural Access is not initialized. Call ctaInitialize first. |
CTAERR_SVR_COMM |
Server communication error. |
ctaSetEventSources specifies the types of events Natural Access sends to an event queue associated with a shared context. Each client application that uses the shared context can keep its own list of services. Natural Access sends to the event queue only events corresponding to entries in the svcname list.
Note: By default, if a context is created in Declared Access mode, applications that attach to it receive service events only for services they explicitly open (even if other services are opened by other client applications). If a context is created in Common Access mode, all applications that attach to it receive events for all service instances opened on the context.
The specified svcname list can include service instances not yet opened on the shared context. Reset the event mask by invoking ctaSetEventSources again and specifying a different svcname list.
Applications can retrieve the current list of svcnames in the existing event mask by invoking ctaGetEventSources.
Refer to Receiving events on event queues for more information.
ctaAttachContext, ctaCreateContextEx
case PAIR('S', 'M' ): /* Set Event Mask */
{
char *svcarr[MAX_SERVICES];
int nsvcs;
if (!Ioffline)
printf("Enter list of services to mask; Press Enter to end list\n")
nsvcs = PromptForStrings("Enter service name", svcarr,
MAX_SVC_NAME_LEN);
ret = ctaSetEventSources(ctahd, svcname, nsvcs);
for ( ; nsvcs >= 0; nsvcs--)
{
free(svcarr[nsvcs]);
} break;
}