Overte C++ Documentation
LossList.h
1 //
2 // LossList.h
3 // libraries/networking/src/udt
4 //
5 // Created by Clement on 7/27/15.
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_LossList_h
13 #define hifi_LossList_h
14 
15 #include <list>
16 
17 #include "SequenceNumber.h"
18 
19 namespace udt {
20 
21 class ControlPacket;
22 
23 class LossList {
24 public:
25  LossList() {}
26 
27  void clear() { _length = 0; _lossList.clear(); }
28 
29  // must always add at the end - faster than insert
30  void append(SequenceNumber seq);
31  void append(SequenceNumber start, SequenceNumber end);
32 
33  // inserts anywhere - MUCH slower
34  void insert(SequenceNumber start, SequenceNumber end);
35 
36  bool remove(SequenceNumber seq);
37  void remove(SequenceNumber start, SequenceNumber end);
38 
39  int getLength() const { return _length; }
40  bool isEmpty() const { return _length == 0; }
41  SequenceNumber getFirstSequenceNumber() const;
42  SequenceNumber popFirstSequenceNumber();
43 
44  void write(ControlPacket& packet, int maxPairs = -1);
45 
46 private:
47  std::list<std::pair<SequenceNumber, SequenceNumber>> _lossList;
48  int _length { 0 };
49 };
50 
51 }
52 
53 #endif // hifi_LossList_h