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

This commit is contained in:
Jonathan Hui
2020-05-11 14:07:25 -07:00
parent 7540758076
commit cf57110c47
20 changed files with 77 additions and 118 deletions
+1 -4
View File
@@ -339,11 +339,8 @@ void otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage);
* @param[in] aQueue A pointer to the message queue.
* @param[in] aMessage The message to remove.
*
* @retval OT_ERROR_NONE Successfully removed the message from the queue.
* @retval OT_ERROR_NOT_FOUND The message is not enqueued in this queue.
*
*/
otError otMessageQueueDequeue(otMessageQueue *aQueue, otMessage *aMessage);
void otMessageQueueDequeue(otMessageQueue *aQueue, otMessage *aMessage);
/**
* This function returns a pointer to the message at the head of the queue.
+3 -2
View File
@@ -134,11 +134,12 @@ void otMessageQueueEnqueueAtHead(otMessageQueue *aQueue, otMessage *aMessage)
queue.Enqueue(message, MessageQueue::kQueuePositionHead);
}
otError otMessageQueueDequeue(otMessageQueue *aQueue, otMessage *aMessage)
void otMessageQueueDequeue(otMessageQueue *aQueue, otMessage *aMessage)
{
Message & message = *static_cast<Message *>(aMessage);
MessageQueue &queue = *static_cast<MessageQueue *>(aQueue);
return queue.Dequeue(message);
queue.Dequeue(message);
}
otMessage *otMessageQueueGetHead(otMessageQueue *aQueue)
+2 -2
View File
@@ -452,7 +452,7 @@ exit:
void CoapBase::DequeueMessage(Message &aMessage)
{
IgnoreError(mPendingRequests.Dequeue(aMessage));
mPendingRequests.Dequeue(aMessage);
if (mRetransmissionTimer.IsRunning() && (mPendingRequests.GetHead() == NULL))
{
@@ -889,7 +889,7 @@ void ResponsesQueue::UpdateQueue(void)
void ResponsesQueue::DequeueResponse(Message &aMessage)
{
IgnoreError(mQueue.Dequeue(aMessage));
mQueue.Dequeue(aMessage);
aMessage.Free();
}
+1 -4
View File
@@ -695,11 +695,8 @@ public:
*
* @param[in] aMessage The message to remove.
*
* @retval OT_ERROR_NONE Successfully removed the message from the queue.
* @retval OT_ERROR_NOT_FOUND The message is not enqueued in a queue.
*
*/
otError Dequeue(Message &aMessage) { return ot::MessageQueue::Dequeue(aMessage); }
void Dequeue(Message &aMessage) { ot::MessageQueue::Dequeue(aMessage); }
};
/**
+2 -2
View File
@@ -95,7 +95,7 @@ void CoapSecure::Stop(void)
for (ot::Message *message = mTransmitQueue.GetHead(); message != NULL; message = message->GetNext())
{
IgnoreError(mTransmitQueue.Dequeue(*message));
mTransmitQueue.Dequeue(*message);
message->Free();
}
@@ -229,7 +229,7 @@ void CoapSecure::HandleTransmit(void)
ot::Message *message = mTransmitQueue.GetHead();
VerifyOrExit(message != NULL, OT_NOOP);
IgnoreError(mTransmitQueue.Dequeue(*message));
mTransmitQueue.Dequeue(*message);
if (mTransmitQueue.GetHead() != NULL)
{
+5 -15
View File
@@ -372,7 +372,7 @@ otError Message::SetPriority(uint8_t aPriority)
if (mBuffer.mHead.mInfo.mInPriorityQ)
{
priorityQueue = mBuffer.mHead.mInfo.mQueue.mPriority;
IgnoreError(priorityQueue->Dequeue(*this));
priorityQueue->Dequeue(*this);
}
mBuffer.mHead.mInfo.mPriority = aPriority;
@@ -832,12 +832,9 @@ void MessageQueue::Enqueue(Message &aMessage, QueuePosition aPosition)
}
}
otError MessageQueue::Dequeue(Message &aMessage)
void MessageQueue::Dequeue(Message &aMessage)
{
otError error = OT_ERROR_NONE;
VerifyOrExit(aMessage.GetMessageQueue() == this, error = OT_ERROR_NOT_FOUND);
OT_ASSERT(aMessage.GetMessageQueue() == this);
OT_ASSERT((aMessage.Next() != NULL) && (aMessage.Prev() != NULL));
if (&aMessage == GetTail())
@@ -857,9 +854,6 @@ otError MessageQueue::Dequeue(Message &aMessage)
aMessage.Next() = NULL;
aMessage.SetMessageQueue(NULL);
exit:
return error;
}
void MessageQueue::GetInfo(uint16_t &aMessageCount, uint16_t &aBufferCount) const
@@ -970,13 +964,12 @@ void PriorityQueue::Enqueue(Message &aMessage)
mTails[priority] = &aMessage;
}
otError PriorityQueue::Dequeue(Message &aMessage)
void PriorityQueue::Dequeue(Message &aMessage)
{
otError error = OT_ERROR_NONE;
uint8_t priority;
Message *tail;
VerifyOrExit(aMessage.GetPriorityQueue() == this, error = OT_ERROR_NOT_FOUND);
OT_ASSERT(aMessage.GetPriorityQueue() == this);
priority = aMessage.GetPriority();
@@ -1000,9 +993,6 @@ otError PriorityQueue::Dequeue(Message &aMessage)
aMessage.Prev() = NULL;
aMessage.SetMessageQueue(NULL);
exit:
return error;
}
void PriorityQueue::GetInfo(uint16_t &aMessageCount, uint16_t &aBufferCount) const
+2 -8
View File
@@ -960,11 +960,8 @@ public:
*
* @param[in] aMessage The message to remove.
*
* @retval OT_ERROR_NONE Successfully removed the message from the list.
* @retval OT_ERROR_NOT_FOUND The message is not enqueued in a list.
*
*/
otError Dequeue(Message &aMessage);
void Dequeue(Message &aMessage);
/**
* This method returns the number of messages and buffers enqueued.
@@ -1042,11 +1039,8 @@ public:
*
* @param[in] aMessage The message to remove.
*
* @retval OT_ERROR_NONE Successfully removed the message from the list.
* @retval OT_ERROR_NOT_FOUND The message is not enqueued in a list.
*
*/
otError Dequeue(Message &aMessage);
void Dequeue(Message &aMessage);
/**
* This method returns the number of messages and buffers enqueued.
+1 -1
View File
@@ -299,7 +299,7 @@ void JoinerRouter::SendDelayedJoinerEntrust(void)
}
else
{
IgnoreError(mDelayedJoinEnts.Dequeue(*message));
mDelayedJoinEnts.Dequeue(*message);
message->Free();
Get<KeyManager>().SetKek(metadata.mKek);
+1 -1
View File
@@ -207,7 +207,7 @@ exit:
void Client::DequeueMessage(Message &aMessage)
{
IgnoreError(mPendingQueries.Dequeue(aMessage));
mPendingQueries.Dequeue(aMessage);
if (mRetransmissionTimer.IsRunning() && (mPendingQueries.GetHead() == NULL))
{
+5 -5
View File
@@ -560,7 +560,7 @@ void Ip6::HandleSendQueue(void)
while ((message = mSendQueue.GetHead()) != NULL)
{
IgnoreError(mSendQueue.Dequeue(*message));
mSendQueue.Dequeue(*message);
IgnoreError(HandleDatagram(*message, NULL, NULL, false));
}
}
@@ -818,7 +818,7 @@ otError Ip6::HandleFragment(Message &aMessage, Netif *aNetif, MessageInfo &aMess
otLogDebgIp6("Reassembly complete.");
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
error = HandleDatagram(*message, aNetif, aMessageInfo.mLinkInfo, aFromNcpHost);
}
@@ -828,7 +828,7 @@ exit:
{
if (message != NULL)
{
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
message->Free();
}
otLogWarnIp6("Reassembly failed: %s", otThreadErrorToString(error));
@@ -847,8 +847,8 @@ void Ip6::CleanupFragmentationBuffer(void)
for (Message *message = mReassemblyList.GetHead(); message;)
{
Message *next = message->GetNext();
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
message->Free();
message = next;
}
@@ -886,7 +886,7 @@ void Ip6::UpdateReassemblyList(void)
otLogNoteIp6("Reassembly timeout.");
SendIcmpError(*message, IcmpHeader::kTypeTimeExceeded, IcmpHeader::kCodeFragmReasTimeEx);
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
message->Free();
}
}
+1 -1
View File
@@ -393,7 +393,7 @@ void Mpl::HandleRetransmissionTimer(void)
}
else
{
IgnoreError(mBufferedMessageSet.Dequeue(*message));
mBufferedMessageSet.Dequeue(*message);
if (metadata.mTransmissionCount == GetTimerExpirations())
{
+1 -1
View File
@@ -212,7 +212,7 @@ exit:
void Client::DequeueMessage(Message &aMessage)
{
IgnoreError(mPendingQueries.Dequeue(aMessage));
mPendingQueries.Dequeue(aMessage);
if (mRetransmissionTimer.IsRunning() && (mPendingQueries.GetHead() == NULL))
{
+3 -3
View File
@@ -138,7 +138,7 @@ void IndirectSender::ClearAllMessagesForSleepyChild(Child &aChild)
Get<MeshForwarder>().mSendMessage = NULL;
}
IgnoreError(Get<MeshForwarder>().mSendQueue.Dequeue(*message));
Get<MeshForwarder>().mSendQueue.Dequeue(*message);
message->Free();
}
}
@@ -218,7 +218,7 @@ Message *IndirectSender::FindIndirectMessage(Child &aChild)
{
message->ClearChildMask(childIndex);
mSourceMatchController.DecrementMessageCount(aChild);
IgnoreError(Get<MeshForwarder>().mSendQueue.Dequeue(*message));
Get<MeshForwarder>().mSendQueue.Dequeue(*message);
message->Free();
continue;
}
@@ -540,7 +540,7 @@ void IndirectSender::HandleSentFrameToChild(const Mac::TxFrame &aFrame,
if (!message->GetDirectTransmission() && !message->IsChildPending())
{
IgnoreError(Get<MeshForwarder>().mSendQueue.Dequeue(*message));
Get<MeshForwarder>().mSendQueue.Dequeue(*message);
message->Free();
}
}
+10 -10
View File
@@ -114,13 +114,13 @@ void MeshForwarder::Stop(void)
while ((message = mSendQueue.GetHead()) != NULL)
{
IgnoreError(mSendQueue.Dequeue(*message));
mSendQueue.Dequeue(*message);
message->Free();
}
while ((message = mReassemblyList.GetHead()) != NULL)
{
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
message->Free();
}
@@ -158,7 +158,7 @@ void MeshForwarder::RemoveMessage(Message &aMessage)
}
}
IgnoreError(queue->Dequeue(aMessage));
queue->Dequeue(aMessage);
LogMessage(kMessageEvict, aMessage, NULL, OT_ERROR_NO_BUFS);
aMessage.Free();
}
@@ -260,14 +260,14 @@ Message *MeshForwarder::GetDirectTransmission(void)
#if OPENTHREAD_FTD
case OT_ERROR_ADDRESS_QUERY:
IgnoreError(mSendQueue.Dequeue(*curMessage));
mSendQueue.Dequeue(*curMessage);
mResolvingQueue.Enqueue(*curMessage);
continue;
#endif
default:
IgnoreError(mSendQueue.Dequeue(*curMessage));
mSendQueue.Dequeue(*curMessage);
LogMessage(kMessageDrop, *curMessage, NULL, error);
curMessage->Free();
continue;
@@ -930,7 +930,7 @@ void MeshForwarder::HandleSentFrame(Mac::TxFrame &aFrame, otError aError)
Get<Mle::Mle>().RequestShorterChildIdRequest();
}
IgnoreError(mSendQueue.Dequeue(*mSendMessage));
mSendQueue.Dequeue(*mSendMessage);
mSendMessage->Free();
mSendMessage = NULL;
mMessageNextOffset = 0;
@@ -962,7 +962,7 @@ void MeshForwarder::HandleDiscoverTimer(void)
{
if (mScanChannels.GetNextChannel(mScanChannel) != OT_ERROR_NONE)
{
IgnoreError(mSendQueue.Dequeue(*mSendMessage));
mSendQueue.Dequeue(*mSendMessage);
mSendMessage->Free();
mSendMessage = NULL;
@@ -1164,7 +1164,7 @@ exit:
{
if (message->GetOffset() >= message->GetLength())
{
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
IgnoreError(HandleDatagram(*message, aLinkInfo, aMacSource));
}
}
@@ -1187,7 +1187,7 @@ void MeshForwarder::ClearReassemblyList(void)
for (message = mReassemblyList.GetHead(); message; message = next)
{
next = message->GetNext();
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
LogMessage(kMessageReassemblyDrop, *message, NULL, OT_ERROR_NO_FRAME_RECEIVED);
@@ -1233,7 +1233,7 @@ bool MeshForwarder::UpdateReassemblyList(void)
}
else
{
IgnoreError(mReassemblyList.Dequeue(*message));
mReassemblyList.Dequeue(*message);
LogMessage(kMessageReassemblyDrop, *message, NULL, OT_ERROR_REASSEMBLY_TIMEOUT);
if (message->GetType() == Message::kTypeIp6)
+3 -3
View File
@@ -160,7 +160,7 @@ void MeshForwarder::HandleResolved(const Ip6::Address &aEid, otError aError)
if (ip6Dst == aEid)
{
IgnoreError(mResolvingQueue.Dequeue(*cur));
mResolvingQueue.Dequeue(*cur);
if (aError == OT_ERROR_NONE)
{
@@ -307,7 +307,7 @@ void MeshForwarder::RemoveMessages(Child &aChild, uint8_t aSubType)
mSendMessage = NULL;
}
IgnoreError(mSendQueue.Dequeue(*message));
mSendQueue.Dequeue(*message);
message->Free();
}
}
@@ -339,7 +339,7 @@ void MeshForwarder::RemoveDataResponseMessages(void)
mSendMessage = NULL;
}
IgnoreError(mSendQueue.Dequeue(*message));
mSendQueue.Dequeue(*message);
LogMessage(kMessageDrop, *message, NULL, OT_ERROR_NONE);
message->Free();
}
+2 -2
View File
@@ -1946,7 +1946,7 @@ void Mle::HandleDelayedResponseTimer(void)
}
else
{
IgnoreError(mDelayedResponses.Dequeue(*message));
mDelayedResponses.Dequeue(*message);
metadata.RemoveFrom(*message);
if (SendMessage(*message, metadata.mDestination) == OT_ERROR_NONE)
@@ -1987,7 +1987,7 @@ void Mle::RemoveDelayedDataResponseMessage(void)
if (message->GetSubType() == Message::kSubTypeMleDataResponse)
{
IgnoreError(mDelayedResponses.Dequeue(*message));
mDelayedResponses.Dequeue(*message);
message->Free();
LogMleMessage("Remove Delayed Data Response", metadata.mDestination);
+5 -5
View File
@@ -93,7 +93,7 @@ void Buffer::Clear(void)
while ((message = otMessageQueueGetHead(&mWriteFrameMessageQueue)) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mWriteFrameMessageQueue, message));
otMessageQueueDequeue(&mWriteFrameMessageQueue, message);
// Note that messages associated with current (unfinished) input frame
// are not yet owned by the `Buffer` and therefore should not
@@ -104,7 +104,7 @@ void Buffer::Clear(void)
{
while ((message = otMessageQueueGetHead(&mMessageQueue[priority])) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mMessageQueue[priority], message));
otMessageQueueDequeue(&mMessageQueue[priority], message);
otMessageFree(message);
}
}
@@ -317,7 +317,7 @@ void Buffer::InFrameDiscard(void)
#if OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE
while ((message = otMessageQueueGetHead(&mWriteFrameMessageQueue)) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mWriteFrameMessageQueue, message));
otMessageQueueDequeue(&mWriteFrameMessageQueue, message);
// Note that messages associated with current (unfinished) input frame
// being discarded, are not yet owned by the `Buffer` and
@@ -520,7 +520,7 @@ otError Buffer::InFrameEnd(void)
// Move all the messages from the frame queue to the main queue.
while ((message = otMessageQueueGetHead(&mWriteFrameMessageQueue)) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mWriteFrameMessageQueue, message));
otMessageQueueDequeue(&mWriteFrameMessageQueue, message);
otMessageQueueEnqueue(&mMessageQueue[mWriteDirection], message);
}
#endif
@@ -831,7 +831,7 @@ otError Buffer::OutFrameRemove(void)
if ((message = otMessageQueueGetHead(&mMessageQueue[mReadDirection])) != NULL)
{
IgnoreError(otMessageQueueDequeue(&mMessageQueue[mReadDirection], message));
otMessageQueueDequeue(&mMessageQueue[mReadDirection], message);
otMessageFree(message);
}
}
+1 -1
View File
@@ -3456,7 +3456,7 @@ otError NcpBase::SendQueuedDatagramMessages(void)
// If forming of the spinel frame fails, the message is enqueued
// back at the front of `mMessageQueue`.
IgnoreError(otMessageQueueDequeue(&mMessageQueue, message));
otMessageQueueDequeue(&mMessageQueue, message);
error = SendDatagramMessage(message);
+16 -28
View File
@@ -79,7 +79,6 @@ void TestMessageQueue(void)
{
ot::MessageQueue messageQueue;
ot::Message * msg[kNumTestMessages];
otError error;
uint16_t msgCount, bufferCount;
sInstance = testInitInstance();
@@ -98,13 +97,13 @@ void TestMessageQueue(void)
// Enqueue 1 message and remove it
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 0);
// Enqueue 1 message at head and remove it
messageQueue.Enqueue(*msg[0], ot::MessageQueue::kQueuePositionHead);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 0);
// Enqueue 5 messages
@@ -124,15 +123,15 @@ void TestMessageQueue(void)
VerifyOrQuit(msgCount == 5, "MessageQueue::GetInfo() failed.");
// Remove from head
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 4, msg[1], msg[2], msg[3], msg[4]);
// Remove a message in middle
SuccessOrQuit(messageQueue.Dequeue(*msg[3]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[3]);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[2], msg[4]);
// Remove from tail
SuccessOrQuit(messageQueue.Dequeue(*msg[4]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[4]);
VerifyMessageQueueContent(messageQueue, 2, msg[1], msg[2]);
// Add after remove
@@ -142,7 +141,7 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 4, msg[1], msg[2], msg[0], msg[3]);
// Remove from middle
SuccessOrQuit(messageQueue.Dequeue(*msg[2]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[2]);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[0], msg[3]);
// Add to head
@@ -150,11 +149,11 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 4, msg[2], msg[1], msg[0], msg[3]);
// Remove from head
SuccessOrQuit(messageQueue.Dequeue(*msg[2]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[2]);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[0], msg[3]);
// Remove from head
SuccessOrQuit(messageQueue.Dequeue(*msg[1]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[1]);
VerifyMessageQueueContent(messageQueue, 2, msg[0], msg[3]);
// Add to head
@@ -166,21 +165,15 @@ void TestMessageQueue(void)
VerifyMessageQueueContent(messageQueue, 4, msg[1], msg[0], msg[3], msg[2]);
// Remove all messages.
SuccessOrQuit(messageQueue.Dequeue(*msg[3]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[3]);
VerifyMessageQueueContent(messageQueue, 3, msg[1], msg[0], msg[2]);
SuccessOrQuit(messageQueue.Dequeue(*msg[1]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[1]);
VerifyMessageQueueContent(messageQueue, 2, msg[0], msg[2]);
SuccessOrQuit(messageQueue.Dequeue(*msg[2]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[2]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
SuccessOrQuit(messageQueue.Dequeue(*msg[0]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 0);
// Check the failure cases: Dequeue a message not in the queue.
messageQueue.Enqueue(*msg[0]);
VerifyMessageQueueContent(messageQueue, 1, msg[0]);
error = messageQueue.Dequeue(*msg[1]);
VerifyOrQuit(error == OT_ERROR_NOT_FOUND, "Dequeuing a message not in the queue did not fail as expected.");
testFreeInstance(sInstance);
}
@@ -220,7 +213,6 @@ void VerifyMessageQueueContentUsingOtApi(otMessageQueue *aQueue, int aExpectedLe
void TestMessageQueueOtApis(void)
{
otMessage * msg[kNumTestMessages];
otError error;
otMessage * message;
otMessageQueue queue, queue2;
@@ -250,17 +242,13 @@ void TestMessageQueueOtApis(void)
VerifyMessageQueueContentUsingOtApi(&queue, 4, msg[2], msg[0], msg[1], msg[3]);
// Remove elements and check the content
SuccessOrQuit(otMessageQueueDequeue(&queue, msg[1]), "Failed to dequeue a message from otMessageQueue.");
otMessageQueueDequeue(&queue, msg[1]);
VerifyMessageQueueContentUsingOtApi(&queue, 3, msg[2], msg[0], msg[3]);
SuccessOrQuit(otMessageQueueDequeue(&queue, msg[0]), "Failed to dequeue a message from otMessageQueue.");
otMessageQueueDequeue(&queue, msg[0]);
VerifyMessageQueueContentUsingOtApi(&queue, 2, msg[2], msg[3]);
SuccessOrQuit(otMessageQueueDequeue(&queue, msg[3]), "Failed to dequeue a message from otMessageQueue.");
otMessageQueueDequeue(&queue, msg[3]);
VerifyMessageQueueContentUsingOtApi(&queue, 1, msg[2]);
// Check the expected failure cases for the enqueue and dequeue:
error = otMessageQueueDequeue(&queue, msg[0]);
VerifyOrQuit(error == OT_ERROR_NOT_FOUND, "Dequeuing a message not in the queue did not fail as expected.");
// Check the failure cases for otMessageQueueGetNext()
message = otMessageQueueGetNext(&queue, NULL);
VerifyOrQuit(message == NULL, "otMessageQueueGetNext(queue, NULL) did not return NULL.");
@@ -279,7 +267,7 @@ void TestMessageQueueOtApis(void)
VerifyOrQuit(message == NULL, "otMessageQueueGetNext() did not return NULL for message not in the queue.");
// Remove all element and make sure queue is empty
SuccessOrQuit(otMessageQueueDequeue(&queue, msg[2]), "Failed to dequeue a message from otMessageQueue.");
otMessageQueueDequeue(&queue, msg[2]);
VerifyMessageQueueContentUsingOtApi(&queue, 0);
testFreeInstance(sInstance);
+12 -20
View File
@@ -230,30 +230,22 @@ void TestPriorityQueue(void)
msgNor[0], msgLow[0]);
// Remove messages in different order and check the content of queue in each step.
SuccessOrQuit(queue.Dequeue(*msgNet[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgNet[0]);
VerifyPriorityQueueContent(queue, 7, msgNet[1], msgHigh[0], msgHigh[1], msgHigh[2], msgHigh[3], msgNor[0],
msgLow[0]);
SuccessOrQuit(queue.Dequeue(*msgHigh[2]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgHigh[2]);
VerifyPriorityQueueContent(queue, 6, msgNet[1], msgHigh[0], msgHigh[1], msgHigh[3], msgNor[0], msgLow[0]);
SuccessOrQuit(queue.Dequeue(*msgNor[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgNor[0]);
VerifyPriorityQueueContent(queue, 5, msgNet[1], msgHigh[0], msgHigh[1], msgHigh[3], msgLow[0]);
SuccessOrQuit(queue.Dequeue(*msgHigh[1]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgHigh[1]);
VerifyPriorityQueueContent(queue, 4, msgNet[1], msgHigh[0], msgHigh[3], msgLow[0]);
SuccessOrQuit(queue.Dequeue(*msgLow[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgLow[0]);
VerifyPriorityQueueContent(queue, 3, msgNet[1], msgHigh[0], msgHigh[3]);
SuccessOrQuit(queue.Dequeue(*msgNet[1]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgNet[1]);
VerifyPriorityQueueContent(queue, 2, msgHigh[0], msgHigh[3]);
SuccessOrQuit(queue.Dequeue(*msgHigh[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgHigh[0]);
VerifyPriorityQueueContent(queue, 1, msgHigh[3]);
SuccessOrQuit(queue.Dequeue(*msgHigh[3]), "PriorityQueue::Dequeue() failed.");
VerifyPriorityQueueContent(queue, 0);
// Check the failure cases: Dequeuing a message not queued.
queue.Enqueue(*msgNet[0]);
VerifyPriorityQueueContent(queue, 1, msgNet[0]);
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.");
queue.Dequeue(*msgHigh[3]);
VerifyPriorityQueueContent(queue, 0);
// Change the priority of an already queued message and check the order change in the queue.
@@ -301,19 +293,19 @@ void TestPriorityQueue(void)
VerifyMsgQueueContent(messageQueue, 3, msgNor[1], msgHigh[1], msgNet[1]);
// Remove messages from the two queues
SuccessOrQuit(queue.Dequeue(*msgHigh[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgHigh[0]);
VerifyPriorityQueueContent(queue, 2, msgLow[0], msgNor[0]);
VerifyMsgQueueContent(messageQueue, 3, msgNor[1], msgHigh[1], msgNet[1]);
SuccessOrQuit(messageQueue.Dequeue(*msgNet[1]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msgNet[1]);
VerifyPriorityQueueContent(queue, 2, msgLow[0], msgNor[0]);
VerifyMsgQueueContent(messageQueue, 2, msgNor[1], msgHigh[1]);
SuccessOrQuit(messageQueue.Dequeue(*msgHigh[1]), "MessageQueue::Dequeue() failed.");
messageQueue.Dequeue(*msgHigh[1]);
VerifyPriorityQueueContent(queue, 2, msgLow[0], msgNor[0]);
VerifyMsgQueueContent(messageQueue, 1, msgNor[1]);
SuccessOrQuit(queue.Dequeue(*msgLow[0]), "PriorityQueue::Dequeue() failed.");
queue.Dequeue(*msgLow[0]);
VerifyPriorityQueueContent(queue, 1, msgNor[0]);
VerifyMsgQueueContent(messageQueue, 1, msgNor[1]);