📄 prmwait.h
字号:
** RETURN** PRReciveWait** When the caller is resumed it is either returned a** valid pointer to a previously added receive wait or** a NULL. If the latter, the function has terminated** for a reason that can be determined by calling** PR_GetError().** If a valid pointer is returned, the reference is to the** file descriptor contained in the receive wait object.** The outcome of the wait operation may still fail, and** if it has, that fact will be noted in the object's** outcome field. Details can be retrieved from PR_GetError().**** ERRORS** PR_INVALID_ARGUMENT_ERROR** The 'group' is not known by the runtime.** PR_PENDING_INTERRUPT_ERROR The thread was interrupted.** PR_INVALID_STATE_ERROR** The group is being destroyed.*/NSPR_API(PRRecvWait*) PR_WaitRecvReady(PRWaitGroup *group);/*** FUNCTION: PR_CancelWaitFileDesc** DESCRIPTION:** PR_CancelWaitFileDesc is provided as a means for cancelling operations** on objects previously submitted by use of PR_AddWaitFileDesc(). If** the runtime knows of the object, it will be marked as having failed** because it was interrupted (similar to PR_Interrupt()). The first** available thread waiting on the group will be made to return the** PRRecvWait object with the outcome noted.**** INPUTS** group The wait group under which the wait receive object was** added.** desc A pointer to the wait receive object that is to be** cancelled.** RETURN** PRStatus If the wait receive object was located and associated** with the specified wait group, the status returned will** be PR_SUCCESS. There is still a race condition that would** permit the offected object to complete normally, but it** is assured that it will complete in the near future.** If the receive object or wait group are invalid, the** function will return with a status of PR_FAILURE.**** ERRORS** PR_INVALID_ARGUMENT_ERROR** The 'group' argument is not recognized as a valid group.** PR_COLLECTION_EMPTY_ERROR** There are no more receive wait objects in the group's** collection.** PR_INVALID_STATE_ERROR** The group is being destroyed.*/NSPR_API(PRStatus) PR_CancelWaitFileDesc(PRWaitGroup *group, PRRecvWait *desc);/*** FUNCTION: PR_CancelWaitGroup** DESCRIPTION:** PR_CancelWaitGroup is provided as a means for cancelling operations** on objects previously submitted by use of PR_AddWaitFileDesc(). Each** successive call will return a pointer to a PRRecvWait object that** was previously registered via PR_AddWaitFileDesc(). If no wait** objects are associated with the wait group, a NULL will be returned.** This function should be called in a loop until a NULL is returned** to reclaim all the wait objects prior to calling PR_DestroyWaitGroup().**** INPUTS** group The wait group under which the wait receive object was** added.** RETURN** PRRecvWait* If the wait group is valid and at least one receive wait** object is present in the group, that object will be** marked as PR_MW_INTERRUPT'd and removed from the group's** queues. Otherwise a NULL will be returned and the reason** for the NULL may be retrieved by calling PR_GetError().**** ERRORS** PR_INVALID_ARGUMENT_ERROR** PR_GROUP_EMPTY_ERROR*/NSPR_API(PRRecvWait*) PR_CancelWaitGroup(PRWaitGroup *group);/*** FUNCTION: PR_CreateWaitGroup** DESCRIPTION:** A wait group is an opaque object that a client may create in order** to semantically group various wait requests. Each wait group is** unique, including the default wait group (NULL). A wait request** that was added under a wait group will only be serviced by a caller** that specified the same wait group.**** INPUT** size The size of the hash table to be used to contain the** receive wait objects. This is just the initial size.** It will grow as it needs to, but to avoid that hassle** one can suggest a suitable size initially. It should** be ~30% larger than the maximum number of receive wait** objects expected.** RETURN** PRWaitGroup If successful, the function will return a pointer to an** object that was allocated by and owned by the runtime.** The reference remains valid until it is explicitly destroyed** by calling PR_DestroyWaitGroup().**** ERRORS** PR_OUT_OF_MEMORY_ERROR*/NSPR_API(PRWaitGroup*) PR_CreateWaitGroup(PRInt32 size);/*** FUNCTION: PR_DestroyWaitGroup** DESCRIPTION:** Undo the effects of PR_CreateWaitGroup(). Any receive wait operations** on the group will be treated as if the each had been the target of a** PR_CancelWaitFileDesc().**** INPUT** group Reference to a wait group previously allocated using** PR_CreateWaitGroup().** RETURN** PRStatus Will be PR_SUCCESS if the wait group was valid and there** are no receive wait objects in that group. Otherwise** will indicate PR_FAILURE.**** ERRORS** PR_INVALID_ARGUMENT_ERROR** The 'group' argument does not reference a known object.** PR_INVALID_STATE_ERROR** The group still contains receive wait objects.*/NSPR_API(PRStatus) PR_DestroyWaitGroup(PRWaitGroup *group);/*** FUNCTION: PR_CreateMWaitEnumerator** DESCRIPTION:** The PR_CreateMWaitEnumerator() function returns a reference to an** opaque PRMWaitEnumerator object. The enumerator object is required** as an argument for each successive call in the stateless enumeration** of the indicated wait group.**** group The wait group that the enumeration is intended to** process. It may be be the default wait group (NULL).** RETURN** PRMWaitEnumerator* group** A reference to an object that will be used to store** intermediate state of enumerations.** ERRORS** Errors are indicated by the function returning a NULL.** PR_INVALID_ARGUMENT_ERROR** The 'group' argument does not reference a known object.** PR_OUT_OF_MEMORY_ERROR*/NSPR_API(PRMWaitEnumerator*) PR_CreateMWaitEnumerator(PRWaitGroup *group);/*** FUNCTION: PR_DestroyMWaitEnumerator** DESCRIPTION:** Destroys the object created by PR_CreateMWaitEnumerator(). The reference** used as an argument becomes invalid.**** INPUT** PRMWaitEnumerator* enumerator** The PRMWaitEnumerator object to destroy.** RETURN** PRStatus** PR_SUCCESS if successful, PR_FAILURE otherwise.** ERRORS** PR_INVALID_ARGUMENT_ERROR** The enumerator is invalid.*/NSPR_API(PRStatus) PR_DestroyMWaitEnumerator(PRMWaitEnumerator* enumerator);/*** FUNCTION: PR_EnumerateWaitGroup** DESCRIPTION:** PR_EnumerateWaitGroup is a thread safe enumerator over a wait group.** Each call to the enumerator must present a valid PRMWaitEnumerator** rererence and a pointer to the "previous" element returned from the** enumeration process or a NULL.**** An enumeration is started by passing a NULL as the "previous" value.** Subsequent calls to the enumerator must pass in the result of the** previous call. The enumeration end is signaled by the runtime returning** a NULL as the result.**** Modifications to the content of the wait group are allowed during** an enumeration. The effect is that the enumeration may have to be** "reset" and that may result in duplicates being returned from the** enumeration.**** An enumeration may be abandoned at any time. The runtime is not** keeping any state, so there are no issues in that regard.*/NSPR_API(PRRecvWait*) PR_EnumerateWaitGroup( PRMWaitEnumerator *enumerator, const PRRecvWait *previous); PR_END_EXTERN_C#endif /* defined(_PRMWAIT_H) *//* prmwait.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -