TSDuck v3.40-4033
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::tlv::StreamMessage Class Referenceabstract

Base class for DVB SimulCrypt TLV messages operating on streams. More...

#include <tstlvStreamMessage.h>

Inheritance diagram for ts::tlv::StreamMessage:
Collaboration diagram for ts::tlv::StreamMessage:

Public Member Functions

 StreamMessage (const tlv::MessageFactory &fact, TAG tag_ch_id, TAG tag_st_id)
 Constructor.
 
 StreamMessage (TAG tag, uint16_t ch_id=0, uint16_t st_id=0)
 Constructor.
 
 StreamMessage (VERSION protocol_version, TAG tag, uint16_t ch_id=0, uint16_t st_id=0)
 Constructor.
 
virtual UString dump (size_t indent=0) const
 Dump routine.
 
void forceProtocolVersion (VERSION version)
 Force the protocol version number to another value.
 
bool hasProtocolVersion () const
 Check if the message has a protocol version number.
 
VERSION protocolVersion () const
 Get the protocol version number.
 
void serialize (Serializer &zer) const
 Serialize the message using a Serializer.
 
TAG tag () const
 Get the message tag.
 

Public Attributes

uint16_t channel_id = 0
 Channel id.
 
uint16_t stream_id = 0
 Stream id.
 

Protected Types

using superclass = StreamMessage
 Alias for the superclass of subclasses.
 

Protected Member Functions

virtual void serializeParameters (Serializer &zer) const =0
 Parameter serialization.
 

Static Protected Member Functions

template<typename INT >
requires std::integral<INT>
static UString dumpDecimal (size_t indent, const UString &name, const INT &value)
 Dump an integer value in decimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpHexa (size_t indent, const UString &name, const INT &value)
 Dump an integer value in hexadecimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpInteger (size_t indent, const UString &name, const INT &value)
 Dump an integer value (helper routine for subclasses).
 
static UString dumpOptional (size_t indent, const UString &name, bool has_value, const ByteBlock &value, uint32_t flags=UString::HEXA|UString::ASCII)
 Dump an optional byte block (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalDecimal (size_t indent, const UString &name, bool has_value, const INT &value)
 Dump an optional integer value in decimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalDecimal (size_t indent, const UString &name, const std::optional< INT > &value)
 Dump an optional integer value in decimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalHexa (size_t indent, const UString &name, bool has_value, const INT &value)
 Dump an optional integer value in hexadecimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalHexa (size_t indent, const UString &name, const std::optional< INT > &value)
 Dump an optional integer value in hexadecimal (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalInteger (size_t indent, const UString &name, bool has_value, const INT &value)
 Dump an optional integer value (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpOptionalInteger (size_t indent, const UString &name, const std::optional< INT > &value)
 Dump an optional integer value (helper routine for subclasses).
 
template<typename INT >
requires std::integral<INT>
static UString dumpVector (size_t indent, const UString &name, const std::vector< INT > &val, UString(*toString)(INT)=nullptr)
 Dump a vector of integer values (helper routine for subclasses).
 
static UString dumpVector (size_t indent, const UString &name, const UStringVector &value)
 Dump a vector of strings (helper routine for subclasses).
 

Detailed Description

Base class for DVB SimulCrypt TLV messages operating on streams.

Constructor & Destructor Documentation

◆ StreamMessage() [1/3]

ts::tlv::StreamMessage::StreamMessage ( TAG  tag,
uint16_t  ch_id = 0,
uint16_t  st_id = 0 
)

Constructor.

Parameters
[in]tagMessage tag.
[in]ch_idChannel id.
[in]st_idStream id.

◆ StreamMessage() [2/3]

ts::tlv::StreamMessage::StreamMessage ( VERSION  protocol_version,
TAG  tag,
uint16_t  ch_id = 0,
uint16_t  st_id = 0 
)

Constructor.

Parameters
[in]protocol_versionProtocol version.
[in]tagMessage tag.
[in]ch_idChannel id.
[in]st_idStream id.

◆ StreamMessage() [3/3]

ts::tlv::StreamMessage::StreamMessage ( const tlv::MessageFactory fact,
TAG  tag_ch_id,
TAG  tag_st_id 
)

Constructor.

Parameters
[in]factMessage factory containing a binary message.
[in]tag_ch_idMessage tag for the channel id field.
[in]tag_st_idMessage tag for the stream id field.

Member Function Documentation

◆ hasProtocolVersion()

bool ts::tlv::Message::hasProtocolVersion ( ) const
inlineinherited

Check if the message has a protocol version number.

Returns
True if the message has a protocol version number.

◆ protocolVersion()

VERSION ts::tlv::Message::protocolVersion ( ) const
inlineinherited

Get the protocol version number.

Returns
The protocol version number.

◆ forceProtocolVersion()

void ts::tlv::Message::forceProtocolVersion ( VERSION  version)
inlineinherited

Force the protocol version number to another value.

Use with care.

Parameters
[in]versionThe protocol version number.

◆ tag()

TAG ts::tlv::Message::tag ( ) const
inlineinherited

Get the message tag.

Returns
The message tag.

◆ serialize()

void ts::tlv::Message::serialize ( Serializer zer) const
inherited

Serialize the message using a Serializer.

Parameters
[in,out]zerA TLV serializer.

◆ dump()

◆ serializeParameters()

◆ dumpVector() [1/2]

static UString ts::tlv::Message::dumpVector ( size_t  indent,
const UString name,
const UStringVector value 
)
staticprotectedinherited

Dump a vector of strings (helper routine for subclasses).

Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueVector of strings.
Returns
The formatted string with embedded new-lines.

◆ dumpVector() [2/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpVector ( size_t  indent,
const UString name,
const std::vector< INT > &  val,
UString(*)(INT toString = nullptr 
)
staticprotectedinherited

Dump a vector of integer values (helper routine for subclasses).

Signed integer types are dumped in decimal, unsigned types in hexadecimal.

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valVector of integer values.
[in]toStringOptional function to convert an INT value into a string.
Returns
The formatted string with embedded new-lines.

◆ dumpOptional()

static UString ts::tlv::Message::dumpOptional ( size_t  indent,
const UString name,
bool  has_value,
const ByteBlock value,
uint32_t  flags = UString::HEXA|UString::ASCII 
)
staticprotectedinherited

Dump an optional byte block (helper routine for subclasses).

Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]has_valueIf false, no value is available, return an empty string.
[in]valueByte block.
[in]flagsHexa dump flags for ts::Hexa().
Returns
The formatted string with embedded new-lines.

◆ dumpDecimal()

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpDecimal ( size_t  indent,
const UString name,
const INT value 
)
inlinestaticprotectedinherited

Dump an integer value in decimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpHexa()

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpHexa ( size_t  indent,
const UString name,
const INT value 
)
inlinestaticprotectedinherited

Dump an integer value in hexadecimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpInteger()

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpInteger ( size_t  indent,
const UString name,
const INT value 
)
inlinestaticprotectedinherited

Dump an integer value (helper routine for subclasses).

Signed integer types are dumped in decimal, unsigned types in hexadecimal.

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalDecimal() [1/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalDecimal ( size_t  indent,
const UString name,
bool  has_value,
const INT value 
)
inlinestaticprotectedinherited

Dump an optional integer value in decimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]has_valueIf false, no value is available, return an empty string.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalDecimal() [2/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalDecimal ( size_t  indent,
const UString name,
const std::optional< INT > &  value 
)
inlinestaticprotectedinherited

Dump an optional integer value in decimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalHexa() [1/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalHexa ( size_t  indent,
const UString name,
bool  has_value,
const INT value 
)
inlinestaticprotectedinherited

Dump an optional integer value in hexadecimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]has_valueIf false, no value is available, return an empty string.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalHexa() [2/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalHexa ( size_t  indent,
const UString name,
const std::optional< INT > &  value 
)
inlinestaticprotectedinherited

Dump an optional integer value in hexadecimal (helper routine for subclasses).

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalInteger() [1/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalInteger ( size_t  indent,
const UString name,
bool  has_value,
const INT value 
)
inlinestaticprotectedinherited

Dump an optional integer value (helper routine for subclasses).

Signed integer types are dumped in decimal, unsigned types in hexadecimal.

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]has_valueIf false, no value is available, return an empty string.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

◆ dumpOptionalInteger() [2/2]

template<typename INT >
requires std::integral<INT>
static UString ts::tlv::Message::dumpOptionalInteger ( size_t  indent,
const UString name,
const std::optional< INT > &  value 
)
inlinestaticprotectedinherited

Dump an optional integer value (helper routine for subclasses).

Signed integer types are dumped in decimal, unsigned types in hexadecimal.

Template Parameters
INTAn integer type.
Parameters
[in]indentLeft indentation size.
[in]nameParameter name.
[in]valueInteger value.
Returns
The formatted string with embedded new-lines.

The documentation for this class was generated from the following file: