diff -r d45095c2f4f3 -r b1fb57be53fe mpx/commonframework/common/src/mpxmessagequeue.cpp --- a/mpx/commonframework/common/src/mpxmessagequeue.cpp Tue Feb 02 00:27:58 2010 +0200 +++ b/mpx/commonframework/common/src/mpxmessagequeue.cpp Fri Mar 19 09:38:24 2010 +0200 @@ -302,4 +302,36 @@ this, data, err, ret); } +// ---------------------------------------------------------------------------- +// Adds a message into the top of the queue and sends the message if slot is available +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CMPXMessageQueue::AddFirst(const CMPXMessage* aMessage, TInt aError) + { + // aMessage should not be NULL and aError is KErrNone + MPX_ASSERT(aMessage || aError); + MPX_FUNC_EX("CMPXMessageQueue::AddFirst()"); + CMPXMessageItem* item(NULL); + TRAPD(err, item = CMPXMessageItem::NewL(aMessage, aError)); + if (KErrNone==err) + { + iMsgs.AddFirst(*item); +#ifdef _DEBUG + MPX_DEBUG3("CMPXMessageQueue::AddFirst 0x%08x, items %d", this, ++iCount); +#endif + }//else failed to create message item. + else + { + MPX_DEBUG2("CMPXMessageQueue::AddFirst Failed to create message item %d", err); + } + if (KErrNone!=err && KErrNone==iFailure) + { // Set the failure code + iFailure = err; + } + if (!iMsgRequest.IsNull()) + { // outstanding request + Send(); + } // else client has not finished current message yet + return err; + } // End of file