Vanetza
Loading...
Searching...
No Matches
socket_traits.hpp
1
#ifndef SOCKET_TRAITS_HPP_
2
#define SOCKET_TRAITS_HPP_
3
4
#include <vanetza/net/osi_layer.hpp>
5
#include <type_traits>
6
7
namespace
vanetza
8
{
9
10
template
<
typename
SOCKET>
11
struct
socket_layers
12
{
13
static
const
OsiLayer min = SOCKET::min_layer;
14
static
const
OsiLayer max = SOCKET::max_layer;
15
16
static_assert
(min <= max,
"Corrupt layer ordering"
);
17
};
18
19
namespace
pdu_tags
20
{
21
22
struct
pdu_tag
{};
23
struct
empty_pdu_tag
:
public
pdu_tag
{};
24
25
struct
phy_tag
:
public
pdu_tag
{};
26
struct
mk2_tag
:
public
phy_tag
{};
27
28
struct
mac_tag
:
public
pdu_tag
{};
29
struct
ethernet_tag
:
public
mac_tag
{};
30
31
}
// namespace pdu_tags
32
33
template
<
typename
SOCKET, OsiLayer LAYER>
34
struct
socket_layer_pdu
35
{
36
typedef
pdu_tags::empty_pdu_tag
tag
;
37
};
38
39
template
<OsiLayer LAYER,
typename
TAG,
class
SOCKET>
40
bool
constexpr
pdu_match(
const
SOCKET&)
41
{
42
return
std::is_same<TAG, typename socket_layer_pdu<SOCKET, LAYER>::tag>::value;
43
}
44
45
}
// namespace vanetza
46
47
#endif
// SOCKET_TRAITS_HPP_
48
vanetza::pdu_tags::empty_pdu_tag
Definition:
socket_traits.hpp:23
vanetza::pdu_tags::ethernet_tag
Definition:
socket_traits.hpp:29
vanetza::pdu_tags::mac_tag
Definition:
socket_traits.hpp:28
vanetza::pdu_tags::mk2_tag
Definition:
socket_traits.hpp:26
vanetza::pdu_tags::pdu_tag
Definition:
socket_traits.hpp:22
vanetza::pdu_tags::phy_tag
Definition:
socket_traits.hpp:25
vanetza::socket_layer_pdu
Definition:
socket_traits.hpp:35
vanetza::socket_layers
Definition:
socket_traits.hpp:12
vanetza
net
socket_traits.hpp
Generated on Thu Nov 30 2023 12:03:35 for Vanetza by
1.9.6