mirror of
https://github.com/espressif/openthread.git
synced 2026-09-02 23:30:07 +00:00
[message-queue] change Dequeue to return void (#4942)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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); }
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -299,7 +299,7 @@ void JoinerRouter::SendDelayedJoinerEntrust(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
IgnoreError(mDelayedJoinEnts.Dequeue(*message));
|
||||
mDelayedJoinEnts.Dequeue(*message);
|
||||
message->Free();
|
||||
|
||||
Get<KeyManager>().SetKek(metadata.mKek);
|
||||
|
||||
@@ -207,7 +207,7 @@ exit:
|
||||
|
||||
void Client::DequeueMessage(Message &aMessage)
|
||||
{
|
||||
IgnoreError(mPendingQueries.Dequeue(aMessage));
|
||||
mPendingQueries.Dequeue(aMessage);
|
||||
|
||||
if (mRetransmissionTimer.IsRunning() && (mPendingQueries.GetHead() == NULL))
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,7 +393,7 @@ void Mpl::HandleRetransmissionTimer(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
IgnoreError(mBufferedMessageSet.Dequeue(*message));
|
||||
mBufferedMessageSet.Dequeue(*message);
|
||||
|
||||
if (metadata.mTransmissionCount == GetTimerExpirations())
|
||||
{
|
||||
|
||||
@@ -212,7 +212,7 @@ exit:
|
||||
|
||||
void Client::DequeueMessage(Message &aMessage)
|
||||
{
|
||||
IgnoreError(mPendingQueries.Dequeue(aMessage));
|
||||
mPendingQueries.Dequeue(aMessage);
|
||||
|
||||
if (mRetransmissionTimer.IsRunning() && (mPendingQueries.GetHead() == NULL))
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user