resmgr_msg_again()
QNX SDP8.0C Library ReferenceAPIDeveloper
Process a message again in a resource manager
Synopsis:
#include <sys/iofunc.h>
#include <sys/resmgr.h>
int resmgr_msg_again( resmgr_context_t *ctp,
                      rcvid_t rcvid);
Arguments:
- ctp
 - A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions.
 - rcvid
 - The receive ID of the message that you want to process again.
 
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The resmgr_msg_again() function reprocesses the message corresponding to the given rcvid. It does this by:
- calling MsgInfo() and MsgRead() to refresh the resmgr_context_t structure to be as it was as when you originally received the message
 - calling MsgCurrent() to adjust your server threads' priority to that of the blocked client
 - processing the message as if it had just arrived
 
You use this function if your resource manager can't process a message right away. For example, if a read operation is blocked, your io_read handler would save the rcvid of the request, and then return _RESMGR_NOREPLY, leaving the client blocked. Later, when the resource manager can handle the request, it can call resmgr_msg_again() to reprocess the message.
Returns:
- -1
 - Failure.
 - 0
 - Success.
 
Errors:
- EFAULT
 - A fault occurred when the kernel tried to access the buffers provided.
 - ESRCH
 - The thread indicated by rcvid doesn't exist, has had its connection detached, or isn't in STATE_REPLY, or it isn't blocked on the connection associated with the rcvid.
 - ESRVRFAULT
 - The receive side of a message transfer encountered a memory fault accessing the receive/reply buffer.
 
Classification:
| Safety: | |
|---|---|
| Cancellation point | No | 
| Signal handler | No | 
| Thread | Yes | 
Page updated: 
