mirror of
https://github.com/espressif/openthread.git
synced 2026-08-07 19:27:46 +00:00
[ip6] move Message::Ownership enum to Ip6 class (#11696)
This commit moves the `Message::Ownership` enum definition to the `Ip6` class. This enum is exclusively used by the `Ip6` class to determine whether to clone a message or take direct custody. This model is not intended for use by other components. `OwnerPtr<>` is the recommended approach for conveying ownership transfers.
This commit is contained in:
@@ -326,25 +326,6 @@ public:
|
||||
|
||||
static constexpr uint8_t kNumPriorities = 4; ///< Number of priority levels.
|
||||
|
||||
/**
|
||||
* Represents the message ownership model when a `Message` instance is passed to a method/function.
|
||||
*/
|
||||
enum Ownership : uint8_t
|
||||
{
|
||||
/**
|
||||
* This value indicates that the method/function receiving a `Message` instance should take custody of the
|
||||
* message (e.g., the method should `Free()` the message if no longer needed).
|
||||
*/
|
||||
kTakeCustody,
|
||||
|
||||
/**
|
||||
* This value indicates that the method/function receiving a `Message` instance does not own the message (e.g.,
|
||||
* it should not `Free()` or `Enqueue()` it in a queue). The receiving method/function should create a
|
||||
* copy/clone of the message to keep (if/when needed).
|
||||
*/
|
||||
kCopyToUse,
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents an IPv6 message origin.
|
||||
*/
|
||||
|
||||
@@ -823,7 +823,7 @@ Error Ip6::HandleExtensionHeaders(OwnedPtr<Message> &aMessagePtr,
|
||||
break;
|
||||
|
||||
case kProtoFragment:
|
||||
IgnoreError(PassToHost(aMessagePtr, aHeader, aNextHeader, aReceive, Message::kCopyToUse));
|
||||
IgnoreError(PassToHost(aMessagePtr, aHeader, aNextHeader, aReceive, kCopyMessageToUse));
|
||||
SuccessOrExit(error = HandleFragment(*aMessagePtr));
|
||||
break;
|
||||
|
||||
@@ -847,15 +847,15 @@ exit:
|
||||
|
||||
Error Ip6::TakeOrCopyMessagePtr(OwnedPtr<Message> &aTargetPtr,
|
||||
OwnedPtr<Message> &aMessagePtr,
|
||||
Message::Ownership aMessageOwnership)
|
||||
MessageOwnership aMessageOwnership)
|
||||
{
|
||||
switch (aMessageOwnership)
|
||||
{
|
||||
case Message::kTakeCustody:
|
||||
case kTakeMessageCustody:
|
||||
aTargetPtr = aMessagePtr.PassOwnership();
|
||||
break;
|
||||
|
||||
case Message::kCopyToUse:
|
||||
case kCopyMessageToUse:
|
||||
aTargetPtr.Reset(aMessagePtr->Clone());
|
||||
break;
|
||||
}
|
||||
@@ -866,7 +866,7 @@ Error Ip6::TakeOrCopyMessagePtr(OwnedPtr<Message> &aTargetPtr,
|
||||
Error Ip6::Receive(Header &aIp6Header,
|
||||
OwnedPtr<Message> &aMessagePtr,
|
||||
uint8_t aIpProto,
|
||||
Message::Ownership aMessageOwnership)
|
||||
MessageOwnership aMessageOwnership)
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
OwnedPtr<Message> messagePtr;
|
||||
@@ -921,7 +921,7 @@ Error Ip6::PassToHost(OwnedPtr<Message> &aMessagePtr,
|
||||
const Header &aHeader,
|
||||
uint8_t aIpProto,
|
||||
bool aReceive,
|
||||
Message::Ownership aMessageOwnership)
|
||||
MessageOwnership aMessageOwnership)
|
||||
{
|
||||
// This method passes the message to host by invoking the
|
||||
// registered IPv6 receive callback. When NAT64 is enabled, it
|
||||
@@ -1208,7 +1208,7 @@ Error Ip6::HandleDatagram(OwnedPtr<Message> aMessagePtr, bool aIsReassembled)
|
||||
bool multicastLoop = aMessagePtr->GetMulticastLoop();
|
||||
|
||||
SuccessOrExit(error = TakeOrCopyMessagePtr(messagePtr, aMessagePtr,
|
||||
forwardThread ? Message::kCopyToUse : Message::kTakeCustody));
|
||||
forwardThread ? kCopyMessageToUse : kTakeMessageCustody));
|
||||
messagePtr->SetMulticastLoop(multicastLoop);
|
||||
messagePtr->RemoveHeader(messagePtr->GetOffset());
|
||||
|
||||
@@ -1223,12 +1223,12 @@ Error Ip6::HandleDatagram(OwnedPtr<Message> aMessagePtr, bool aIsReassembled)
|
||||
if ((forwardHost || receive) && !aIsReassembled)
|
||||
{
|
||||
error = PassToHost(aMessagePtr, header, nextHeader, receive,
|
||||
(receive || forwardThread) ? Message::kCopyToUse : Message::kTakeCustody);
|
||||
(receive || forwardThread) ? kCopyMessageToUse : kTakeMessageCustody);
|
||||
}
|
||||
|
||||
if (receive)
|
||||
{
|
||||
error = Receive(header, aMessagePtr, nextHeader, forwardThread ? Message::kCopyToUse : Message::kTakeCustody);
|
||||
error = Receive(header, aMessagePtr, nextHeader, forwardThread ? kCopyMessageToUse : kTakeMessageCustody);
|
||||
}
|
||||
|
||||
if (forwardThread)
|
||||
|
||||
@@ -349,10 +349,16 @@ private:
|
||||
|
||||
static constexpr uint16_t kMinimalMtu = 1280;
|
||||
|
||||
enum MessageOwnership : uint8_t
|
||||
{
|
||||
kTakeMessageCustody,
|
||||
kCopyMessageToUse,
|
||||
};
|
||||
|
||||
static uint8_t PriorityToDscp(Message::Priority aPriority);
|
||||
static Error TakeOrCopyMessagePtr(OwnedPtr<Message> &aTargetPtr,
|
||||
OwnedPtr<Message> &aMessagePtr,
|
||||
Message::Ownership aMessageOwnership);
|
||||
MessageOwnership aMessageOwnership);
|
||||
|
||||
void EnqueueDatagram(Message &aMessage);
|
||||
void HandleSendQueue(void);
|
||||
@@ -365,7 +371,7 @@ private:
|
||||
const Header &aHeader,
|
||||
uint8_t aIpProto,
|
||||
bool aReceive,
|
||||
Message::Ownership aMessageOwnership);
|
||||
MessageOwnership aMessageOwnership);
|
||||
Error HandleExtensionHeaders(OwnedPtr<Message> &aMessagePtr,
|
||||
const Header &aHeader,
|
||||
uint8_t &aNextHeader,
|
||||
@@ -387,7 +393,7 @@ private:
|
||||
Error Receive(Header &aIp6Header,
|
||||
OwnedPtr<Message> &aMessagePtr,
|
||||
uint8_t aIpProto,
|
||||
Message::Ownership aMessageOwnership);
|
||||
MessageOwnership aMessageOwnership);
|
||||
#if OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE
|
||||
void UpdateBorderRoutingCounters(const Header &aHeader, uint16_t aMessageLength, bool aIsInbound);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user