Converts between VoipStreamPacket and binary (network byte order) Udp header.
More...
#include <VoipStreamPacketSerializer.h>
Converts between VoipStreamPacket and binary (network byte order) Udp header.
◆ VoipStreamPacketSerializer()
| inet::VoipStreamPacketSerializer::VoipStreamPacketSerializer |
( |
| ) |
|
|
inline |
25 : 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.
43 auto startPosition = stream.getPosition();
44 auto voipStreamPacket = makeShared<VoipStreamPacket>();
45 int headerLength = stream.readByte();
46 voipStreamPacket->setHeaderLength(headerLength);
47 VoipStreamPacketType
type =
static_cast<VoipStreamPacketType
>(stream.readByte());
48 voipStreamPacket->setType(
type);
49 voipStreamPacket->setCodec(stream.readUint32Be());
50 voipStreamPacket->setSampleBits(stream.readUint16Be());
51 voipStreamPacket->setSampleRate(stream.readUint16Be());
52 voipStreamPacket->setTransmitBitrate(stream.readUint32Be());
53 voipStreamPacket->setSamplesPerPacket(stream.readUint16Be());
54 voipStreamPacket->setSeqNo(stream.readUint16Be());
55 voipStreamPacket->setTimeStamp(stream.readUint32Be());
56 voipStreamPacket->setSsrc(stream.readUint32Be());
58 voipStreamPacket->setDataLength(stream.readUint16Be());
60 B remainders =
B(headerLength) - (stream.getPosition() - startPosition);
61 if (remainders.get() < 0) {
62 voipStreamPacket->markIncorrect();
63 return voipStreamPacket;
65 stream.readByteRepeatedly(
'?',
B(remainders).get());
66 return voipStreamPacket;
◆ serialize()
| void inet::VoipStreamPacketSerializer::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.
19 auto startPosition = stream.getLength();
20 const auto& voipStreamPacket = staticPtrCast<const VoipStreamPacket>(chunk);
21 stream.writeByte(voipStreamPacket->getHeaderLength());
22 VoipStreamPacketType
type = voipStreamPacket->getType();
23 stream.writeByte(
type);
24 stream.writeUint32Be(voipStreamPacket->getCodec());
25 stream.writeUint16Be(voipStreamPacket->getSampleBits());
26 stream.writeUint16Be(voipStreamPacket->getSampleRate());
27 stream.writeUint32Be(voipStreamPacket->getTransmitBitrate());
28 stream.writeUint16Be(voipStreamPacket->getSamplesPerPacket());
29 stream.writeUint16Be(voipStreamPacket->getSeqNo());
30 stream.writeUint32Be(voipStreamPacket->getTimeStamp());
31 stream.writeUint32Be(voipStreamPacket->getSsrc());
33 stream.writeUint16Be(voipStreamPacket->getDataLength());
35 int64_t remainders =
B(voipStreamPacket->getHeaderLength()).get() -
B((stream.getLength() - startPosition)).get();
37 throw cRuntimeError(
"voipStreamPacket length = %d smaller than required %d bytes, try to increment the 'voipHeaderSize' parameter", (
int)
B(voipStreamPacket->getChunkLength()).get(), (
int)
B(stream.getLength() - startPosition).get());
38 stream.writeByteRepeatedly(
'?', remainders);
The documentation for this class was generated from the following files: