Location:
e32msgqueue.h
class RMsgQueue : public RMsgQueueBase;
A handle to a message queue.
The templated class provides the behaviour for managing an asynchronous queue of messages, where the template parameter defines the message type.
The class adds a type-checking interface to the basic message queue functionality provided by RMsgQueueBase
.
RHandleBase
- A handle to an object
RMsgQueueBase
- Provides implementation for managing an asynchronous message queue, and is a base class for the
RMsgQueue
- A handle to a message queue
Defined in RMsgQueue
:
CreateGlobal()
, CreateLocal()
, Receive()
, ReceiveBlocking()
, Send()
, SendBlocking()
Inherited from RHandleBase
:
Attributes()
,
Close()
,
Duplicate()
,
FullName()
,
Handle()
,
HandleInfo()
,
Name()
,
SetHandle()
,
SetHandleNC()
,
SetReturnedHandle()
,
iHandle
Inherited from RMsgQueueBase
:
CancelDataAvailable()
,
CancelSpaceAvailable()
,
KMaxLength
,
MessageSize()
,
NotifyDataAvailable()
,
NotifySpaceAvailable()
,
Open()
,
OpenGlobal()
,
anonymous
inline TInt CreateLocal(TInt aSize, TOwnerType aType=EOwnerProcess);
Creates a message queue that is private to the current process, and opens a handle to that message queue.
The size of each message in the queue is the size of the template parameter type. This must conform to the restrictions imposed
on the aMsgLength parameter passed to the base class function RMsgQueueBase::CreateLocal()
.
|
|
|
inline TInt CreateGlobal(const TDesC &aName, TInt aSize, TOwnerType aType=EOwnerProcess);
Creates a global message queue, and opens a handle to that message queue.
If the name is non-empty, the message queue is visible to all processes. If the name is empty it cannot be opened or searched for by name, but a handle to it can be passed to another process as a process parameter or via IPC.
The size of each message in the queue is the size of the template parameter type. This must conform to the restrictions imposed
on the aMsgLength parameter passed to the base class function RMsgQueueBase::CreateGlobal()
.
|
|
|
inline TInt Send(const T &aMsg);
Sends a message through this queue.
The function does not wait (i.e. block), if the queue is full.
The function is implemented through a call to RMsgQueueBase::Send()
.
|
|
inline void SendBlocking(const T &aMsg);
Sends a message through this queue, and waits for space to become available if the queue is full.
The function uses NotifySpaceAvailable()
to provide the blocking operation. Note that it is not possible to cancel a call to SendBlocking()
.
The function is implemented through a call to RMsgQueueBase::SendBlocking()
.
|
inline TInt Receive(T &aMsg);
Retrieves the first message in the queue.
The function does not wait (i.e. block), if the queue is empty.
The function is implemented through a call to RMsgQueueBase::Receive()
.
|
|
inline void ReceiveBlocking(T &aMsg);
Retrieves the first message in the queue, and waits if the queue is empty.
The function uses NotifyDataAvailable()
to provide the blocking operation. Note it is not possible to cancel a call to ReceiveBlocking()
.
The function is implemented through a call to RMsgQueueBase::ReceiveBlocking()
.
|