[message-queue] change Enqueue() to return void (#4942)

This commit is contained in:
Jonathan Hui
2020-05-11 14:07:25 -07:00
parent af207d18d7
commit 7540758076
20 changed files with 76 additions and 125 deletions
+2 -8
View File
@@ -321,11 +321,8 @@ void otMessageQueueInit(otMessageQueue *aQueue);
* @param[in] aQueue A pointer to the message queue.
* @param[in] aMessage The message to add.
*
* @retval OT_ERROR_NONE Successfully added the message to the queue.
* @retval OT_ERROR_ALREADY The message is already enqueued in a queue.
*
*/
otError otMessageQueueEnqueue(otMessageQueue *aQueue, otMessage *aMessage);
void otMessageQueueEnqueue(otMessageQueue *aQueue, otMessage *aMessage);
/**
* This function adds a message at the head/front of the given message queue.
@@ -333,11 +330,8 @@ otError otMessageQueueEnqueue(otMessageQueue *aQueue, otMessage *aMessage);
* @param[in] aQueue A pointer to the message queue.
* @param[in] aMessage The message to add.
*
* @retval OT_ERROR_NONE Successfully added the message to the queue.
* @retval OT_ERROR_ALREADY The message is already enqueued in a queue.
*
*/
otError otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage);
void otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage);
/**
* This function removes a message from the given message queue.
+6 -4
View File
@@ -118,18 +118,20 @@ void otMessageQueueInit(otMessageQueue *aQueue)
aQueue->mData = NULL;
}
otError otMessageQueueEnqueue(otMessageQueue *aQueue, otMessage *aMessage)
void otMessageQueueEnqueue(otMessageQueue *aQueue, otMessage *aMessage)
{
Message & message = *static_cast<Message *>(aMessage);
MessageQueue &queue = *static_cast<MessageQueue *>(aQueue);
return queue.Enqueue(message);
queue.Enqueue(message);
}
otError otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage)
void otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage)
{
Message & message = *static_cast<Message *>(aMessage);
MessageQueue &queue = *static_cast<MessageQueue *>(aQueue);
return queue.Enqueue(message, MessageQueue::kQueuePositionHead);
queue.Enqueue(message, MessageQueue::kQueuePositionHead);
}
otError otMessageQueueDequeue(otMessageQueue *aQueue, otMessage *aMessage)
+2 -2
View File
@@ -437,7 +437,7 @@ Message *CoapBase::CopyAndEnqueueMessage(const Message &aMessage, uint16_t aCopy
mRetransmissionTimer.FireAtIfEarlier(aMetadata.mNextTimerShot);
IgnoreError(mPendingRequests.Enqueue(*messageCopy));
mPendingRequests.Enqueue(*messageCopy);
exit:
@@ -848,7 +848,7 @@ void ResponsesQueue::EnqueueResponse(Message & aMessage,
VerifyOrExit(metadata.AppendTo(*responseCopy) == OT_ERROR_NONE, responseCopy->Free());
IgnoreError(mQueue.Enqueue(*responseCopy));
mQueue.Enqueue(*responseCopy);
mTimer.FireAtIfEarlier(metadata.mDequeueTime);
+2 -11
View File
@@ -678,11 +678,8 @@ public:
*
* @param[in] aMessage The message to add.
*
* @retval OT_ERROR_NONE Successfully added the message to the queue.
* @retval OT_ERROR_ALREADY The message is already enqueued in a queue.
*
*/
otError Enqueue(Message &aMessage) { return Enqueue(aMessage, kQueuePositionTail); }
void Enqueue(Message &aMessage) { Enqueue(aMessage, kQueuePositionTail); }
/**
* This method adds a message at a given position (head/tail) of the queue.
@@ -690,14 +687,8 @@ public:
* @param[in] aMessage The message to add.
* @param[in] aPosition The position (head or tail) where to add the message.
*
* @retval OT_ERROR_NONE Successfully added the message to the queue.
* @retval OT_ERROR_ALREADY The message is already enqueued in a queue.
*
*/
otError Enqueue(Message &aMessage, QueuePosition aPosition)
{
return ot::MessageQueue::Enqueue(aMessage, aPosition);
}
void Enqueue(Message &aMessage, QueuePosition aPosition) { ot::MessageQueue::Enqueue(aMessage, aPosition); }
/**
* This method removes a message from the queue.
+2 -5
View File
@@ -176,13 +176,10 @@ otError CoapSecure::Send(ot::Message &aMessage, const Ip6::MessageInfo &aMessage
{
OT_UNUSED_VARIABLE(aMessageInfo);
otError error;
SuccessOrExit(error = mTransmitQueue.Enqueue(aMessage));
mTransmitQueue.Enqueue(aMessage);
mTransmitTask.Post();
exit:
return error;
return OT_ERROR_NONE;
}
void CoapSecure::HandleDtlsConnected(void *aContext, bool aConnected)
+6 -16
View File
@@ -379,7 +379,7 @@ otError Message::SetPriority(uint8_t aPriority)
if (priorityQueue != NULL)
{
IgnoreError(priorityQueue->Enqueue(*this));
priorityQueue->Enqueue(*this);
}
exit:
@@ -801,16 +801,13 @@ Message *MessageQueue::GetHead(void) const
return (GetTail() == NULL) ? NULL : GetTail()->Next();
}
otError MessageQueue::Enqueue(Message &aMessage, QueuePosition aPosition)
void MessageQueue::Enqueue(Message &aMessage, QueuePosition aPosition)
{
otError error = OT_ERROR_NONE;
VerifyOrExit(!aMessage.IsInAQueue(), error = OT_ERROR_ALREADY);
OT_ASSERT(!aMessage.IsInAQueue());
OT_ASSERT((aMessage.Next() == NULL) && (aMessage.Prev() == NULL));
aMessage.SetMessageQueue(this);
OT_ASSERT((aMessage.Next() == NULL) && (aMessage.Prev() == NULL));
if (GetTail() == NULL)
{
aMessage.Next() = &aMessage;
@@ -833,9 +830,6 @@ otError MessageQueue::Enqueue(Message &aMessage, QueuePosition aPosition)
SetTail(&aMessage);
}
}
exit:
return error;
}
otError MessageQueue::Dequeue(Message &aMessage)
@@ -944,14 +938,13 @@ Message *PriorityQueue::GetTail(void) const
return FindFirstNonNullTail(0);
}
otError PriorityQueue::Enqueue(Message &aMessage)
void PriorityQueue::Enqueue(Message &aMessage)
{
otError error = OT_ERROR_NONE;
uint8_t priority;
Message *tail;
Message *next;
VerifyOrExit(!aMessage.IsInAQueue(), error = OT_ERROR_ALREADY);
OT_ASSERT(!aMessage.IsInAQueue());
aMessage.SetPriorityQueue(this);
@@ -975,9 +968,6 @@ otError PriorityQueue::Enqueue(Message &aMessage)
}
mTails[priority] = &aMessage;
exit:
return error;
}
otError PriorityQueue::Dequeue(Message &aMessage)
+3 -12
View File
@@ -943,11 +943,8 @@ public:
*
* @param[in] aMessage The message to add.
*
* @retval OT_ERROR_NONE Successfully added the message to the list.
* @retval OT_ERROR_ALREADY The message is already enqueued in a list.
*
*/
otError Enqueue(Message &aMessage) { return Enqueue(aMessage, kQueuePositionTail); }
void Enqueue(Message &aMessage) { Enqueue(aMessage, kQueuePositionTail); }
/**
* This method adds a message at a given position (head/tail) of the list.
@@ -955,11 +952,8 @@ public:
* @param[in] aMessage The message to add.
* @param[in] aPosition The position (head or tail) where to add the message.
*
* @retval OT_ERROR_NONE Successfully added the message to the list.
* @retval OT_ERROR_ALREADY The message is already enqueued in a list.
*
*/
otError Enqueue(Message &aMessage, QueuePosition aPosition);
void Enqueue(Message &aMessage, QueuePosition aPosition);
/**
* This method removes a message from the list.
@@ -1040,11 +1034,8 @@ public:
*
* @param[in] aMessage The message to add.
*
* @retval OT_ERROR_NONE Successfully added the message to the list.
* @retval OT_ERROR_ALREADY The message is already enqueued in a list.
*
*/
otError Enqueue(Message &aMessage);
void Enqueue(Message &aMessage);
/**
* This method removes a message from the list.
+1 -1
View File
@@ -247,7 +247,7 @@ void JoinerRouter::DelaySendingJoinerEntrust(const Ip6::MessageInfo &aMessageInf
SuccessOrExit(error = metadata.AppendTo(*message));
IgnoreError(mDelayedJoinEnts.Enqueue(*message));
mDelayedJoinEnts.Enqueue(*message);
if (!mTimer.IsRunning())
{
+1 -1
View File
@@ -190,7 +190,7 @@ Message *Client::CopyAndEnqueueMessage(const Message &aMessage, const QueryMetad
// Append the copy with retransmission data and add it to the queue.
SuccessOrExit(error = aQueryMetadata.AppendTo(*messageCopy));
IgnoreError(mPendingQueries.Enqueue(*messageCopy));
mPendingQueries.Enqueue(*messageCopy);
mRetransmissionTimer.FireAtIfEarlier(aQueryMetadata.mTransmissionTime);
+2 -2
View File
@@ -448,7 +448,7 @@ exit:
void Ip6::EnqueueDatagram(Message &aMessage)
{
IgnoreError(mSendQueue.Enqueue(aMessage));
mSendQueue.Enqueue(aMessage);
mSendQueueTask.Post();
}
@@ -775,7 +775,7 @@ otError Ip6::HandleFragment(Message &aMessage, Netif *aNetif, MessageInfo &aMess
mTimer.Start(kStateUpdatePeriod);
}
IgnoreError(mReassemblyList.Enqueue(*message));
mReassemblyList.Enqueue(*message);
otLogDebgIp6("start reassembly.");
}
+1 -1
View File
@@ -326,7 +326,7 @@ void Mpl::AddBufferedMessage(Message &aMessage, uint16_t aSeedId, uint8_t aSeque
metadata.GenerateNextTransmissionTime(TimerMilli::GetNow(), interval);
SuccessOrExit(error = metadata.AppendTo(*messageCopy));
IgnoreError(mBufferedMessageSet.Enqueue(*messageCopy));
mBufferedMessageSet.Enqueue(*messageCopy);
mRetransmissionTimer.FireAtIfEarlier(metadata.mTransmissionTime);
+1 -1
View File
@@ -195,7 +195,7 @@ Message *Client::CopyAndEnqueueMessage(const Message &aMessage, const QueryMetad
// Append the copy with retransmission data and add it to the queue.
SuccessOrExit(error = aQueryMetadata.AppendTo(*messageCopy));
IgnoreError(mPendingQueries.Enqueue(*messageCopy));
mPendingQueries.Enqueue(*messageCopy);
mRetransmissionTimer.FireAtIfEarlier(aQueryMetadata.mTransmissionTime);
+2 -2
View File
@@ -261,7 +261,7 @@ Message *MeshForwarder::GetDirectTransmission(void)
case OT_ERROR_ADDRESS_QUERY:
IgnoreError(mSendQueue.Dequeue(*curMessage));
IgnoreError(mResolvingQueue.Enqueue(*curMessage));
mResolvingQueue.Enqueue(*curMessage);
continue;
#endif
@@ -1117,7 +1117,7 @@ void MeshForwarder::HandleFragment(const uint8_t * aFrame,
ClearReassemblyList();
}
IgnoreError(mReassemblyList.Enqueue(*message));
mReassemblyList.Enqueue(*message);
if (!mUpdateTimer.IsRunning())
{
+2 -3
View File
@@ -52,7 +52,7 @@ otError MeshForwarder::SendMessage(Message &aMessage)
IgnoreError(aMessage.SetOffset(0));
aMessage.SetDatagramTag(0);
SuccessOrExit(error = mSendQueue.Enqueue(aMessage));
mSendQueue.Enqueue(aMessage);
switch (aMessage.GetType())
{
@@ -138,7 +138,6 @@ otError MeshForwarder::SendMessage(Message &aMessage)
mScheduleTransmissionTask.Post();
exit:
return error;
}
@@ -165,7 +164,7 @@ void MeshForwarder::HandleResolved(const Ip6::Address &aEid, otError aError)
if (aError == OT_ERROR_NONE)
{
IgnoreError(mSendQueue.Enqueue(*cur));
mSendQueue.Enqueue(*cur);
enqueuedMessage = true;
}
else
+2 -5
View File
@@ -39,17 +39,14 @@ namespace ot {
otError MeshForwarder::SendMessage(Message &aMessage)
{
otError error;
aMessage.SetDirectTransmission();
IgnoreError(aMessage.SetOffset(0));
aMessage.SetDatagramTag(0);
SuccessOrExit(error = mSendQueue.Enqueue(aMessage));
mSendQueue.Enqueue(aMessage);
mScheduleTransmissionTask.Post();
exit:
return error;
return OT_ERROR_NONE;
}
otError MeshForwarder::EvictMessage(uint8_t aPriority)
+1 -1
View File
@@ -2587,7 +2587,7 @@ otError Mle::AddDelayedResponse(Message &aMessage, const Ip6::Address &aDestinat
metadata.mDestination = aDestination;
SuccessOrExit(error = metadata.AppendTo(aMessage));
IgnoreError(mDelayedResponses.Enqueue(aMessage));
mDelayedResponses.Enqueue(aMessage);
mDelayedResponseTimer.FireAtIfEarlier(metadata.mSendTime);
+2 -2
View File
@@ -403,7 +403,7 @@ otError Buffer::InFrameFeedMessage(otMessage *aMessage)
SuccessOrExit(error = InFrameBeginSegment());
// Enqueue the message in the current write frame queue.
SuccessOrExit(error = otMessageQueueEnqueue(&mWriteFrameMessageQueue, aMessage));
otMessageQueueEnqueue(&mWriteFrameMessageQueue, aMessage);
// End/Close the current segment marking the flag that it contains an associated message.
InFrameEndSegment(kSegmentHeaderMessageIndicatorFlag);
@@ -521,7 +521,7 @@ otError Buffer::InFrameEnd(void)
while ((message = otMessageQueueGetHead(&mWriteFrameMessageQueue)) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mWriteFrameMessageQueue, message));
IgnoreError(otMessageQueueEnqueue(&mMessageQueue[mWriteDirection], message));
otMessageQueueEnqueue(&mMessageQueue[mWriteDirection], message);
}
#endif
+2 -2
View File
@@ -3397,7 +3397,7 @@ void NcpBase::HandleDatagramFromStack(otMessage *aMessage)
{
VerifyOrExit(aMessage != NULL, OT_NOOP);
SuccessOrExit(otMessageQueueEnqueue(&mMessageQueue, aMessage));
otMessageQueueEnqueue(&mMessageQueue, aMessage);
// If there is no queued spinel command response, try to write/send
// the datagram message immediately. If there is a queued response
@@ -3462,7 +3462,7 @@ otError NcpBase::SendQueuedDatagramMessages(void)
if (error != OT_ERROR_NONE)
{
IgnoreError(otMessageQueueEnqueueAtHead(&mMessageQueue, message));
otMessageQueueEnqueueAtHead(&mMessageQueue, message);
}
SuccessOrExit(error);
+20 -28
View File
@@ -96,28 +96,27 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 0);
// Enqueue 1 message and remove it
SuccessOrQuit(messageQueue.Enqueue(*msg[0]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
VerifyMessageQueueContent(messageQueue, 0);
// Enqueue 1 message at head and remove it
SuccessOrQuit(messageQueue.Enqueue(*msg[0], ot::MessageQueue::kQueuePositionHead),
"MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[0], ot::MessageQueue::kQueuePositionHead);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
VerifyMessageQueueContent(messageQueue, 0);
// Enqueue 5 messages
SuccessOrQuit(messageQueue.Enqueue(*msg[0]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Enqueue(*msg[1]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[1]);
VerifyMessageQueueContent(messageQueue, 2, msg[0], msg[1]);
SuccessOrQuit(messageQueue.Enqueue(*msg[2]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[2]);
VerifyMessageQueueContent(messageQueue, 3, msg[0], msg[1], msg[2]);
SuccessOrQuit(messageQueue.Enqueue(*msg[3]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[3]);
VerifyMessageQueueContent(messageQueue, 4, msg[0], msg[1], msg[2], msg[3]);
SuccessOrQuit(messageQueue.Enqueue(*msg[4]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[4]);
VerifyMessageQueueContent(messageQueue, 5, msg[0], msg[1], msg[2], msg[3], msg[4]);
// Check the GetInfo()
@@ -137,9 +136,9 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 2, msg[1], msg[2]);
// Add after remove
SuccessOrQuit(messageQueue.Enqueue(*msg[0]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[2], msg[0]);
SuccessOrQuit(messageQueue.Enqueue(*msg[3]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[3]);
VerifyMessageQueueContent(messageQueue, 4, msg[1], msg[2], msg[0], msg[3]);
// Remove from middle
@@ -147,8 +146,7 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[0], msg[3]);
// Add to head
SuccessOrQuit(messageQueue.Enqueue(*msg[2], ot::MessageQueue::kQueuePositionHead),
"MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[2], ot::MessageQueue::kQueuePositionHead);
VerifyMessageQueueContent(messageQueue, 4, msg[2], msg[1], msg[0], msg[3]);
// Remove from head
@@ -160,13 +158,11 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 2, msg[0], msg[3]);
// Add to head
SuccessOrQuit(messageQueue.Enqueue(*msg[1], ot::MessageQueue::kQueuePositionHead),
"MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[1], ot::MessageQueue::kQueuePositionHead);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[0], msg[3]);
// Add to tail
SuccessOrQuit(messageQueue.Enqueue(*msg[2], ot::MessageQueue::kQueuePositionTail),
"MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msg[2], ot::MessageQueue::kQueuePositionTail);
VerifyMessageQueueContent(messageQueue, 4, msg[1], msg[0], msg[3], msg[2]);
// Remove all messages.
@@ -179,11 +175,9 @@ void TestMessageQueue(void)
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
VerifyMessageQueueContent(messageQueue, 0);
// Check the failure cases: Enqueue an already queued message or dequeue a message not in the queue.
SuccessOrQuit(messageQueue.Enqueue(*msg[0]), "MessageQueue::Enqueue() failed.");
// Check the failure cases: Dequeue a message not in the queue.
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
error = messageQueue.Enqueue(*msg[0]);
VerifyOrQuit(error == OT_ERROR_ALREADY, "Enqueuing an already queued message did not fail as expected.");
error = messageQueue.Dequeue(*msg[1]);
VerifyOrQuit(error == OT_ERROR_NOT_FOUND, "Dequeuing a message not in the queue did not fail as expected.");
@@ -246,13 +240,13 @@ void TestMessageQueueOtApis(void)
VerifyMessageQueueContentUsingOtApi(&queue, 0);
// Add message to the queue and check the content
SuccessOrQuit(otMessageQueueEnqueue(&queue, msg[0]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueue(&queue, msg[0]);
VerifyMessageQueueContentUsingOtApi(&queue, 1, msg[0]);
SuccessOrQuit(otMessageQueueEnqueue(&queue, msg[1]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueue(&queue, msg[1]);
VerifyMessageQueueContentUsingOtApi(&queue, 2, msg[0], msg[1]);
SuccessOrQuit(otMessageQueueEnqueueAtHead(&queue, msg[2]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueueAtHead(&queue, msg[2]);
VerifyMessageQueueContentUsingOtApi(&queue, 3, msg[2], msg[0], msg[1]);
SuccessOrQuit(otMessageQueueEnqueue(&queue, msg[3]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueue(&queue, msg[3]);
VerifyMessageQueueContentUsingOtApi(&queue, 4, msg[2], msg[0], msg[1], msg[3]);
// Remove elements and check the content
@@ -264,8 +258,6 @@ void TestMessageQueueOtApis(void)
VerifyMessageQueueContentUsingOtApi(&queue, 1, msg[2]);
// Check the expected failure cases for the enqueue and dequeue:
error = otMessageQueueEnqueue(&queue, msg[2]);
VerifyOrQuit(error == OT_ERROR_ALREADY, "Enqueuing an already queued message did not fail as expected.");
error = otMessageQueueDequeue(&queue, msg[0]);
VerifyOrQuit(error == OT_ERROR_NOT_FOUND, "Dequeuing a message not in the queue did not fail as expected.");
@@ -276,9 +268,9 @@ void TestMessageQueueOtApis(void)
VerifyOrQuit(message == NULL, "otMessageQueueGetNext() did not return NULL for a message not in the queue.");
// Check the failure case when attempting to do otMessageQueueGetNext() but passing in a wrong queue pointer.
SuccessOrQuit(otMessageQueueEnqueue(&queue2, msg[0]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueue(&queue2, msg[0]);
VerifyMessageQueueContentUsingOtApi(&queue2, 1, msg[0]);
SuccessOrQuit(otMessageQueueEnqueue(&queue2, msg[1]), "Failed to enqueue a message to otMessageQueue.");
otMessageQueueEnqueue(&queue2, msg[1]);
VerifyMessageQueueContentUsingOtApi(&queue2, 2, msg[0], msg[1]);
message = otMessageQueueGetNext(&queue2, msg[0]);
+16 -18
View File
@@ -210,22 +210,22 @@ void TestPriorityQueue(void)
VerifyPriorityQueueContent(queue, 0);
// Add msgs in different orders and check the content of queue.
SuccessOrQuit(queue.Enqueue(*msgHigh[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgHigh[0]);
VerifyPriorityQueueContent(queue, 1, msgHigh[0]);
SuccessOrQuit(queue.Enqueue(*msgHigh[1]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgHigh[1]);
VerifyPriorityQueueContent(queue, 2, msgHigh[0], msgHigh[1]);
SuccessOrQuit(queue.Enqueue(*msgNet[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgNet[0]);
VerifyPriorityQueueContent(queue, 3, msgNet[0], msgHigh[0], msgHigh[1]);
SuccessOrQuit(queue.Enqueue(*msgNet[1]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgNet[1]);
VerifyPriorityQueueContent(queue, 4, msgNet[0], msgNet[1], msgHigh[0], msgHigh[1]);
SuccessOrQuit(queue.Enqueue(*msgHigh[2]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgHigh[2]);
VerifyPriorityQueueContent(queue, 5, msgNet[0], msgNet[1], msgHigh[0], msgHigh[1], msgHigh[2]);
SuccessOrQuit(queue.Enqueue(*msgLow[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgLow[0]);
VerifyPriorityQueueContent(queue, 6, msgNet[0], msgNet[1], msgHigh[0], msgHigh[1], msgHigh[2], msgLow[0]);
SuccessOrQuit(queue.Enqueue(*msgNor[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgNor[0]);
VerifyPriorityQueueContent(queue, 7, msgNet[0], msgNet[1], msgHigh[0], msgHigh[1], msgHigh[2], msgNor[0],
msgLow[0]);
SuccessOrQuit(queue.Enqueue(*msgHigh[3]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgHigh[3]);
VerifyPriorityQueueContent(queue, 8, msgNet[0], msgNet[1], msgHigh[0], msgHigh[1], msgHigh[2], msgHigh[3],
msgNor[0], msgLow[0]);
@@ -248,22 +248,20 @@ void TestPriorityQueue(void)
SuccessOrQuit(queue.Dequeue(*msgHigh[3]), "PriorityQueue::Dequeue() failed.");
VerifyPriorityQueueContent(queue, 0);
// Check the failure cases: Enqueuing an already queued message, or dequeuing a message not queued.
SuccessOrQuit(queue.Enqueue(*msgNet[0]), "PriorityQueue::Enqueue() failed.");
// Check the failure cases: Dequeuing a message not queued.
queue.Enqueue(*msgNet[0]);
VerifyPriorityQueueContent(queue, 1, msgNet[0]);
VerifyOrQuit(queue.Enqueue(*msgNet[0]) == OT_ERROR_ALREADY,
"Enqueuing an already queued message did not fail as expected.");
VerifyOrQuit(queue.Dequeue(*msgHigh[0]) == OT_ERROR_NOT_FOUND,
"Dequeuing a message not queued, did not fail as expected.");
SuccessOrQuit(queue.Dequeue(*msgNet[0]), "PriorityQueue::Dequeue() failed.");
VerifyPriorityQueueContent(queue, 0);
// Change the priority of an already queued message and check the order change in the queue.
SuccessOrQuit(queue.Enqueue(*msgNor[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgNor[0]);
VerifyPriorityQueueContent(queue, 1, msgNor[0]);
SuccessOrQuit(queue.Enqueue(*msgHigh[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgHigh[0]);
VerifyPriorityQueueContent(queue, 2, msgHigh[0], msgNor[0]);
SuccessOrQuit(queue.Enqueue(*msgLow[0]), "PriorityQueue::Enqueue() failed.");
queue.Enqueue(*msgLow[0]);
VerifyPriorityQueueContent(queue, 3, msgHigh[0], msgNor[0], msgLow[0]);
SuccessOrQuit(msgNor[0]->SetPriority(ot::Message::kPriorityNet),
@@ -287,9 +285,9 @@ void TestPriorityQueue(void)
"SetPriority failed for an already queued message.");
VerifyPriorityQueueContent(queue, 3, msgHigh[0], msgNor[0], msgLow[0]);
SuccessOrQuit(messageQueue.Enqueue(*msgNor[1]), "MessageQueue::Enqueue() failed.");
SuccessOrQuit(messageQueue.Enqueue(*msgHigh[1]), "MessageQueue::Enqueue() failed.");
SuccessOrQuit(messageQueue.Enqueue(*msgNet[1]), "MessageQueue::Enqueue() failed.");
messageQueue.Enqueue(*msgNor[1]);
messageQueue.Enqueue(*msgHigh[1]);
messageQueue.Enqueue(*msgNet[1]);
VerifyMsgQueueContent(messageQueue, 3, msgNor[1], msgHigh[1], msgNet[1]);
// Change priority of message and check for not in messageQueue.