NAME irReserveResource - reserve resources for later use SYNOPSIS #include <irapi.h> int irReserveResource (channel_id cid, int tag, ir_reserve_t *presources, long mode, int *failure); int irReservedResourceNumber (channel_id cid, int capability, int implementation); DESCRIPTION The irReserveResource function acquires or allocates one or more resources for later use on a particular voice channel (cid). Only one resource of each type (capability/implementation) may be reserved per channel. Normally, a process automatically allocates a single resource by using it. For example, playing a voice file uses (allocates) the resources necessary to play the file and performing speech recognition allocates ASR resources. A resource then is deallocated automatically after using it. irReserveResource allows an application to insure that a resource is available before using it. Typically this should be done immediately after channel initialization [ irInit(3IRAPI)]. The application frees the resource when it is no longer required by calling irFreeResource(3IRAPI). If irReserveResource succeeds, the requested resources are dedicated to the channel. Other channels can not access this channel's allocated resource until either the owner relinquishes control [via irFreeResource(3IRAPI)], the chan- nel is released via irDeinit(3IRAPI), irReturn(3IRAPI). Since this dedication can cause requests for resources from other channels to fail that normally would succeed, irReserveResource should be used with care. In general, an application that uses irReserveResource uses more resources than an application that does not. tag is a user supplied number that associates the irReser- veResource call with a subsequent event. presources is a pointer to an array of capability/implementation pairs to be allocated. If imple- mentation is set to IRD_INVALID, the implementation specific switch parameter is referenced to determine the implementation. A capability of IRC_NULL indicates the end of the list. If the requested resources are available, irReserveResource returns IRR_OK. mode defines the return operation of irReserveResource when the requested resource is not immedi- ately available: IRD_IMMEDIATE If the requested resources are not available, irReserveResource returns IRR_FAIL. Once irReserveResource is called, no other processing can be done on the cid until the request for reserve is complete as the channel is placed in the IRS_RESERVING library state. failure contains an index into the reserve array indicating the element which could not be allocated. The reserved resources are preserved across irSubProg(3IRAPI) boundaries. A call to irDeinit(3IRAPI) cancels pending resource requests. irReservedResourceNumber returns the resource number of the resource reserved by irReserveResource. EVENT No events are generated by irReservedResource and irReservedResourceNumber. RETURN VALUE irReserveResource has the following return codes: IRR_OK is returned if the request is successful. IRR_FAIL is returned if an error occurs. On a multi- resource request, all successful intermediate resource allo- cation made by the current call to irReserveResource before failure is freed before irReserveResource returns. That is, failure implies complete failure. irReservedResourceNumber returns the resource number for the resource previously reserved for capability and implementa- tion. If there is no such resource then IRR_FAIL is returned. ERROR irError is set as follows if an error occurs: IRER_INVALID if the cid, mode or some capability in presources is not valid IRER_SYSERROR if a system or driver call failure occurs (check irSysError for additional information) IRER_RTU_BUSY if the required Feature License's are all in use and IRP_RESOURCE_RETURNMODE is set to IRD_IMMEDIATE IRER_NO_RTU if no Feature License has been purchased for this function IRER_RESOURCEBUSY if there are no resources available and IRP_RESOURCE_RETURNMODE is set to IRD_IMMEDIATE IRER_NORESOURCES if no resources exist with the indicated capability IRER_BADSTATE if the cid is not in the IRS_IDLE, IRS_PLAY_QUEUED, or IRS_SAY_QUEUED state CAVEAT Use of this function is not mandatory. It is provided for special cases where it is desirable to reserve resources in advance. Otherwise, all IRAPI functions implicitly reserve resources when needed. IRER_NODATA if the resource list specified by presources is empty (ie. the first capability specified is IRC_NULL). IRER_NOTCOLLOCATED if a resource allocation for echo cancel- lation or recognition failed because IRP_RESOURCE_MASK was set to other than IRD_ANY_RESOURCE. The application may want to reset IRP_RESOURCE_MASK to IRD_ANY_RESOURCE or some other value and retry the resource allocation. SEE ALSO irFreeResource(3IRAPI) VERSION This is version 11/7/02 of this man page.