Diag-Client-Lib
Public Types | Public Member Functions | Private Attributes | List of all members
doip_client::DoipMessage Class Referencefinal

Immutable class to store received doip message. More...

#include <doip_message.h>

Collaboration diagram for doip_client::DoipMessage:
Collaboration graph
[legend]

Public Types

enum class  MessageType : std::uint8_t { kUdp , kTcp }
 Definition of message type. More...
 
enum class  RxSocketType : std::uint8_t { kBroadcast , kUnicast }
 Definition of socket type from where the request was received. More...
 
using IpAddressType = std::string_view
 Type alias of IP address type. More...
 

Public Member Functions

 DoipMessage (MessageType message_type, IpAddressType host_ip_address, std::uint16_t host_port_number, core_type::Span< std::uint8_t > payload)
 Constructs an instance of DoipMessage. More...
 
 DoipMessage (const DoipMessage &other)=default
 Default copy assignment, copy constructor, move assignment and move constructor. More...
 
 DoipMessage (DoipMessage &&other) noexcept=default
 
DoipMessageoperator= (const DoipMessage &other)=default
 
DoipMessageoperator= (DoipMessage &&other) noexcept=default
 
 ~DoipMessage () noexcept=default
 Destructs an instance of DoipMessage. More...
 
IpAddressType GetHostIpAddress () const
 Get the host ip address. More...
 
std::uint16_t GetHostPortNumber () const
 Get the host port number. More...
 
std::uint8_t GetProtocolVersion () const
 Get the protocol version. More...
 
std::uint8_t GetInverseProtocolVersion () const
 Get the inverse protocol version. More...
 
std::uint16_t GetPayloadType () const
 Get the payload type. More...
 
std::uint16_t GetServerAddress () const
 Get the payload type. More...
 
std::uint16_t GetClientAddress () const
 Get the payload type. More...
 
std::uint32_t GetPayloadLength () const
 Get the payload length. More...
 
core_type::Span< std::uint8_t > GetPayload () const
 Get the payload. More...
 

Private Attributes

MessageType message_type_
 Store the message type. More...
 
std::string host_ip_address_
 Store remote ip address. More...
 
std::uint16_t host_port_number_
 Store remote port number. More...
 
std::uint8_t protocol_version_
 Store protocol version. More...
 
std::uint8_t protocol_version_inv_
 Store protocol inverse version. More...
 
std::uint16_t server_address_
 Store server address. More...
 
std::uint16_t client_address_
 Store server address. More...
 
std::uint16_t payload_type_
 Store payload type. More...
 
std::uint32_t payload_length_
 Store payload length. More...
 
core_type::Span< std::uint8_t > payload_
 Store payload. More...
 

Detailed Description

Immutable class to store received doip message.

Definition at line 21 of file doip_message.h.

Member Typedef Documentation

◆ IpAddressType

using doip_client::DoipMessage::IpAddressType = std::string_view

Type alias of IP address type.

Definition at line 36 of file doip_message.h.

Member Enumeration Documentation

◆ MessageType

enum doip_client::DoipMessage::MessageType : std::uint8_t
strong

Definition of message type.

Enumerator
kUdp 
kTcp 

Definition at line 26 of file doip_message.h.

26 : std::uint8_t { kUdp, kTcp };

◆ RxSocketType

enum doip_client::DoipMessage::RxSocketType : std::uint8_t
strong

Definition of socket type from where the request was received.

Enumerator
kBroadcast 
kUnicast 

Definition at line 31 of file doip_message.h.

31 : std::uint8_t { kBroadcast, kUnicast };

Constructor & Destructor Documentation

◆ DoipMessage() [1/3]

doip_client::DoipMessage::DoipMessage ( MessageType  message_type,
DoipMessage::IpAddressType  host_ip_address,
std::uint16_t  host_port_number,
core_type::Span< std::uint8_t >  payload 
)

Constructs an instance of DoipMessage.

Parameters
[in]message_typeThe type of message constructed
[in]host_ip_addressThe host ip address
[in]host_port_numberThe host port number
[in]payloadThe received data payload

Definition at line 34 of file doip_message.cpp.

36  : message_type_{message_type},
37  host_ip_address_{host_ip_address},
38  host_port_number_{host_port_number},
39  protocol_version_{payload[0u]},
40  protocol_version_inv_{payload[1u]},
41  server_address_{0u},
42  client_address_{0u},
45  constexpr std::uint8_t kDoipHeaderSize{8u};
46  constexpr std::uint8_t kSourceAddressSize{4u};
47 
49  ? // header + server address(2 byte) + client address(2 byte)
50  core_type::Span<std::uint8_t>{&payload[kDoipHeaderSize + kSourceAddressSize],
51  payload.size() - (kDoipHeaderSize + kSourceAddressSize)}
52  : core_type::Span<std::uint8_t>{&payload[kDoipHeaderSize], payload.size() - kDoipHeaderSize};
53  if (message_type == MessageType::kTcp) {
54  server_address_ = GetServerAddr(payload);
55  client_address_ = GetClientAddr(payload);
56  } // no client
57 }
constexpr size_type size() const noexcept
Return the size of this Span.
Definition: span.h:508
MessageType message_type_
Store the message type.
Definition: doip_message.h:124
std::uint16_t client_address_
Store server address.
Definition: doip_message.h:153
std::uint8_t protocol_version_
Store protocol version.
Definition: doip_message.h:138
std::uint8_t protocol_version_inv_
Store protocol inverse version.
Definition: doip_message.h:143
std::uint16_t server_address_
Store server address.
Definition: doip_message.h:148
std::uint32_t payload_length_
Store payload length.
Definition: doip_message.h:163
core_type::Span< std::uint8_t > payload_
Store payload.
Definition: doip_message.h:168
std::string host_ip_address_
Store remote ip address.
Definition: doip_message.h:128
std::uint16_t host_port_number_
Store remote port number.
Definition: doip_message.h:133
std::uint16_t payload_type_
Store payload type.
Definition: doip_message.h:158
auto GetClientAddr(core_type::Span< std::uint8_t > payload) noexcept -> std::uint16_t
auto GetServerAddr(core_type::Span< std::uint8_t > payload) noexcept -> std::uint16_t
auto GetDoIPPayloadLength(core_type::Span< std::uint8_t > payload) noexcept -> std::uint32_t
auto GetDoIPPayloadType(core_type::Span< std::uint8_t > payload) noexcept -> std::uint16_t

References client_address_, doip_client::anonymous_namespace{doip_message.cpp}::GetClientAddr(), doip_client::anonymous_namespace{doip_message.cpp}::GetServerAddr(), kTcp, message_type_, payload_, server_address_, and core_type::Span< T, Extent >::size().

Here is the call graph for this function:

◆ DoipMessage() [2/3]

doip_client::DoipMessage::DoipMessage ( const DoipMessage other)
default

Default copy assignment, copy constructor, move assignment and move constructor.

◆ DoipMessage() [3/3]

doip_client::DoipMessage::DoipMessage ( DoipMessage &&  other)
defaultnoexcept

◆ ~DoipMessage()

doip_client::DoipMessage::~DoipMessage ( )
defaultnoexcept

Destructs an instance of DoipMessage.

Member Function Documentation

◆ GetClientAddress()

std::uint16_t doip_client::DoipMessage::GetClientAddress ( ) const
inline

Get the payload type.

Returns
The payload type

Definition at line 106 of file doip_message.h.

106 { return client_address_; }

References client_address_.

◆ GetHostIpAddress()

IpAddressType doip_client::DoipMessage::GetHostIpAddress ( ) const
inline

Get the host ip address.

Returns
The IP address

Definition at line 70 of file doip_message.h.

70 { return host_ip_address_; }

References host_ip_address_.

◆ GetHostPortNumber()

std::uint16_t doip_client::DoipMessage::GetHostPortNumber ( ) const
inline

Get the host port number.

Returns
The port number

Definition at line 76 of file doip_message.h.

76 { return host_port_number_; }

References host_port_number_.

◆ GetInverseProtocolVersion()

std::uint8_t doip_client::DoipMessage::GetInverseProtocolVersion ( ) const
inline

Get the inverse protocol version.

Returns
The inverse protocol version

Definition at line 88 of file doip_message.h.

88 { return protocol_version_inv_; }

References protocol_version_inv_.

◆ GetPayload()

core_type::Span<std::uint8_t> doip_client::DoipMessage::GetPayload ( ) const
inline

Get the payload.

Returns
The payload

Definition at line 118 of file doip_message.h.

118 { return payload_; }

References payload_.

◆ GetPayloadLength()

std::uint32_t doip_client::DoipMessage::GetPayloadLength ( ) const
inline

Get the payload length.

Returns
The payload length

Definition at line 112 of file doip_message.h.

112 { return payload_length_; }

References payload_length_.

◆ GetPayloadType()

std::uint16_t doip_client::DoipMessage::GetPayloadType ( ) const
inline

Get the payload type.

Returns
The payload type

Definition at line 94 of file doip_message.h.

94 { return payload_type_; }

References payload_type_.

Referenced by doip_client::channel::udp_channel::DoipUdpChannelHandler::ProcessDoIPPayload().

Here is the caller graph for this function:

◆ GetProtocolVersion()

std::uint8_t doip_client::DoipMessage::GetProtocolVersion ( ) const
inline

Get the protocol version.

Returns
The protocol version

Definition at line 82 of file doip_message.h.

82 { return protocol_version_; }

References protocol_version_.

◆ GetServerAddress()

std::uint16_t doip_client::DoipMessage::GetServerAddress ( ) const
inline

Get the payload type.

Returns
The payload type

Definition at line 100 of file doip_message.h.

100 { return server_address_; }

References server_address_.

◆ operator=() [1/2]

DoipMessage& doip_client::DoipMessage::operator= ( const DoipMessage other)
default

◆ operator=() [2/2]

DoipMessage& doip_client::DoipMessage::operator= ( DoipMessage &&  other)
defaultnoexcept

Member Data Documentation

◆ client_address_

std::uint16_t doip_client::DoipMessage::client_address_
private

Store server address.

Definition at line 153 of file doip_message.h.

Referenced by DoipMessage(), and GetClientAddress().

◆ host_ip_address_

std::string doip_client::DoipMessage::host_ip_address_
private

Store remote ip address.

Definition at line 128 of file doip_message.h.

Referenced by GetHostIpAddress().

◆ host_port_number_

std::uint16_t doip_client::DoipMessage::host_port_number_
private

Store remote port number.

Definition at line 133 of file doip_message.h.

Referenced by GetHostPortNumber().

◆ message_type_

MessageType doip_client::DoipMessage::message_type_
private

Store the message type.

Definition at line 124 of file doip_message.h.

Referenced by DoipMessage().

◆ payload_

core_type::Span<std::uint8_t> doip_client::DoipMessage::payload_
private

Store payload.

Definition at line 168 of file doip_message.h.

Referenced by DoipMessage(), and GetPayload().

◆ payload_length_

std::uint32_t doip_client::DoipMessage::payload_length_
private

Store payload length.

Definition at line 163 of file doip_message.h.

Referenced by GetPayloadLength().

◆ payload_type_

std::uint16_t doip_client::DoipMessage::payload_type_
private

Store payload type.

Definition at line 158 of file doip_message.h.

Referenced by GetPayloadType().

◆ protocol_version_

std::uint8_t doip_client::DoipMessage::protocol_version_
private

Store protocol version.

Definition at line 138 of file doip_message.h.

Referenced by GetProtocolVersion().

◆ protocol_version_inv_

std::uint8_t doip_client::DoipMessage::protocol_version_inv_
private

Store protocol inverse version.

Definition at line 143 of file doip_message.h.

Referenced by GetInverseProtocolVersion().

◆ server_address_

std::uint16_t doip_client::DoipMessage::server_address_
private

Store server address.

Definition at line 148 of file doip_message.h.

Referenced by DoipMessage(), and GetServerAddress().


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