mirror of
https://github.com/espressif/openthread.git
synced 2026-08-23 10:49:51 +00:00
[message-queue] change Enqueue() to return void (#4942)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user