Converts between AckingMacHeader and binary network byte order mac header.
More...
#include <AckingMacHeaderSerializer.h>
Converts between AckingMacHeader and binary network byte order mac header.
◆ AckingMacHeaderSerializer()
| inet::AckingMacHeaderSerializer::AckingMacHeaderSerializer |
( |
| ) |
|
|
inline |
27 : FieldsChunkSerializer() {}
◆ deserialize()
Deserializes a chunk from a stream by reading the bytes at the current position of the stream.
The current stream position is updated according to the length of the returned chunk.
Implements inet::FieldsChunkSerializer.
39 auto startPosition = stream.getPosition();
40 auto macHeader = makeShared<AckingMacHeader>();
41 uint8_t length = stream.readUint8();
42 macHeader->setChunkLength(
B(length));
43 macHeader->setSrc(stream.readMacAddress());
44 macHeader->setDest(stream.readMacAddress());
45 macHeader->setNetworkProtocol(stream.readUint16Be());
46 macHeader->setSrcModuleId(stream.readUint64Be());
47 B remainders =
B(length) - (stream.getPosition() - startPosition);
48 ASSERT(remainders >=
B(0));
49 stream.readByteRepeatedly(
'?',
B(remainders).get());
◆ serialize()
| void inet::AckingMacHeaderSerializer::serialize |
( |
MemoryOutputStream & |
stream, |
|
|
const Ptr< const Chunk > & |
chunk |
|
) |
| const |
|
overrideprotectedvirtual |
Serializes a chunk into a stream by writing all bytes representing the chunk at the end of the stream.
Implements inet::FieldsChunkSerializer.
24 auto startPosition = stream.getLength();
25 auto macHeader = staticPtrCast<const AckingMacHeader>(chunk);
26 stream.writeUint8(
B(macHeader->getChunkLength()).get());
27 stream.writeMacAddress(macHeader->getSrc());
28 stream.writeMacAddress(macHeader->getDest());
29 stream.writeUint16Be(macHeader->getNetworkProtocol());
30 stream.writeUint64Be(macHeader->getSrcModuleId());
31 int64_t remainders =
B(macHeader->getChunkLength() - (stream.getLength() - startPosition)).get();
33 throw cRuntimeError(
"AckingMacHeader length = %d smaller than required %d bytes", (
int)
B(macHeader->getChunkLength()).get(), (
int)
B(stream.getLength() - startPosition).get());
34 stream.writeByteRepeatedly(
'?', remainders);
The documentation for this class was generated from the following files: