summaryrefslogtreecommitdiff
path: root/src/seqWindow.h
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2009-01-12 23:39:51 +0000
committerChristian Pointner <equinox@anytun.org>2009-01-12 23:39:51 +0000
commitb979b0be8ac5623ff3f4c3b5a5331edd953aa0bb (patch)
tree7e8c3d344412ce4f2b916a70caaa0f7838f4590d /src/seqWindow.h
parentcleaned up includes (diff)
ported uAnytun sequence window to anytun
Diffstat (limited to 'src/seqWindow.h')
-rw-r--r--src/seqWindow.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/seqWindow.h b/src/seqWindow.h
index 5bac491..e16e335 100644
--- a/src/seqWindow.h
+++ b/src/seqWindow.h
@@ -39,22 +39,32 @@
#include "threadUtils.hpp"
#include "datatypes.h"
+class SeqWindow;
+
+class SeqWindowElement {
+public:
+ SeqWindowElement();
+ ~SeqWindowElement();
+
+ void init(window_size_t w, seq_nr_t m);
+
+ seq_nr_t max_;
+ window_size_t pos_;
+ u_int8_t* window_;
+};
+
class SeqWindow
{
public:
- typedef std::deque<seq_nr_t> SeqDeque;
- typedef std::map<sender_id_t, SeqDeque> SenderMap;
+ typedef std::map<sender_id_t, SeqWindowElement> SenderMap;
SeqWindow(window_size_t w);
~SeqWindow();
- SeqDeque::size_type getLength(sender_id_t sender);
- bool hasSeqNr(sender_id_t sender, seq_nr_t seq);
- void addSeqNr(sender_id_t sender, seq_nr_t seq);
+ bool checkAndAdd(sender_id_t sender, seq_nr_t seq_nr);
void clear(sender_id_t sender);
void clear();
-
private:
window_size_t window_size_;
Mutex mutex_;