OMNET++中peekAtFront的作用是什么

What is the function of peekAtFront in OMNET++

我在 OMNET++ 中找到了以下代码。

void Mac::sendDataPacket()
{
    nbTxDataPackets++;
    if (currentTxFrame == nullptr)
        popTxQueue();
    auto packet = currentTxFrame->dup();
    const auto& hdr = packet->peekAtFront<MacHeaderBase>();
    lastDataPktDestAddr = hdr->getDestAddr();
    attachSignal(packet, simTime());
    sendDown(packet);
}

谁能告诉我下面命令的作用是什么?

const auto& hdr = packet->peekAtFront<MacHeaderBase>();
lastDataPktDestAddr = hdr->getDestAddr();

谢谢

INET中的

Packet是一种数据结构,表示一个真实的数据包(如UDP数据报、IP数据包、以太网帧等)。 Packet 的实例内部可能包含其他结构。要在 Packet 开头获取数据,可以使用函数 popAtFront()。它从 Packet 的实例中删除该数据。但是,有时需要检查 Packet 开头的结构而不删除它。在这种情况下,可以使用 peekAtFront()。所以行:

packet->peekAtFront<MacHeaderBase>();

returns packet 开头的第一个数据结构 - 无需删除它。然后将结构转换为 MacHeaderBase.
总结:该行允许检查 packet 是否包含 MAC 帧。

参考:INET Developer's Guide - Working with Packets.