Vanetza
 
Loading...
Searching...
No Matches
next_hop.cpp
1#include "next_hop.hpp"
2
3namespace vanetza
4{
5namespace geonet
6{
7
8NextHop::NextHop() : m_state(State::Discarded)
9{
10}
11
12bool NextHop::discarded() const
13{
14 return m_state == State::Discarded;
15}
16
17bool NextHop::buffered() const
18{
19 return m_state == State::Buffered;
20}
21
22bool NextHop::valid() const
23{
24 return m_state == State::Valid;
25}
26
27const MacAddress& NextHop::mac() const
28{
29 return m_destination;
30}
31
32bool NextHop::process() &&
33{
34 if (valid()) {
35 PendingPacket<GbcPdu>(std::move(m_packet), m_destination).process();
36 m_state = State::Discarded;
37 return true;
38 } else {
39 return false;
40 }
41}
42
43void NextHop::transmit(Packet&& packet, const MacAddress& destination)
44{
45 m_state = NextHop::State::Valid;
46 m_packet = std::move(packet);
47 m_destination = destination;
48}
49
50void NextHop::discard()
51{
52 m_state = NextHop::State::Discarded;
53}
54
55void NextHop::buffer()
56{
57 m_state = NextHop::State::Buffered;
58}
59
60} // namespace geonet
61} // namespace vanetza
62