Vanetza
 
Loading...
Searching...
No Matches
duplicate_packet_list.cpp
1#include <vanetza/geonet/duplicate_packet_list.hpp>
2#include <cassert>
3
4namespace vanetza
5{
6namespace geonet
7{
8
9DuplicatePacketList::DuplicatePacketList(unsigned elements) :
10 m_elements(elements)
11{
12 assert(m_elements.size() == 0);
13}
14
15bool DuplicatePacketList::check(SequenceNumber sn)
16{
17 ListElement* element = find(sn);
18 if (element) {
19 ++element->counter;
20 return true;
21 } else {
22 m_elements.push_back(ListElement { sn });
23 return false;
24 }
25}
26
27unsigned DuplicatePacketList::counter(SequenceNumber sn) const
28{
29 for (auto& element : m_elements) {
30 if (element.sequence_number == sn) {
31 return element.counter;
32 }
33 }
34 return 0;
35}
36
37DuplicatePacketList::ListElement* DuplicatePacketList::find(SequenceNumber sn)
38{
39 for (auto& element : m_elements) {
40 if (element.sequence_number == sn) {
41 return &element;
42 }
43 }
44 return nullptr;
45}
46
47DuplicatePacketList::ListElement::ListElement(SequenceNumber sn) :
48 sequence_number(sn), counter(1)
49{
50}
51
52} // namespace geonet
53} // namespace vanetza