IP_Receive
IP_Receive — receives any message.
Syntax
#include <cogent.h>
int IP_Receive( | IP_Task* | myself, |
| | IP_Msg* | rmsg, |
| | IP_MsgInfo* | msginfo); |
Arguments
- myself
- A task structure referring to the current
process.
- rmsg
- A message structure to hold the received
message.
- msginfo
- A structure to be filled with extra
information.
Returns
The type of the received message.
Description
This function receives
message of any form, and classifies them according to type. Relevant
information about the sender is stored in the
msginfo structure. A message can be one of
the following types:
- IP_GUI means a GUI event
occurred. No further processing is necessary.
IP_ASYNC means an asynchronous
message was received. No reply is necessary.
- msginfo->subtype = ST_DH_EXCEPTION,
ST_DH_ECHO, or other.
- msginfo->rcvid = the queue
pulse ID
IP_SYNC means a synchronous
message was received. A reply is necessary via a call to
IP_MsgInfoReply.
- msginfo->rcvid = the
rcvid (QNX 6) or the
pid (QNX 4/Linux)
- IP_NONE means
IP_Receive returned without receiving
a message. This is possible if the queue pulse is
triggered, but the queued message is no longer
available.
IP_ERROR means an error
occurred during
IP_Receive,
but defied classification.
- IP_SIGNAL means
IP_Receive exited due to a
signal.
IP_PULSE means a pulse was
received. No reply is necessary.
- msginfo->rcvid = the pulse
ID.
IP_RAW means a message from a
task not using the Cascade IPC library was received. The
message data is contained in
(void*)(rmsg->msg). A reply is required
with a call to
IP_MsgInfoReplyRaw.
- msginfo->rcvid = the
rcvid (QNX 6) or the
pid (QNX 4/Linux)
IP_FD means activity occurred
on a file descriptor. No data has been read from the file
descriptor.
- msginfo->rcvid = the file
descriptor.