00001 #ifndef _FLOODHISTOY_H__
00002 #define _FLOODHISTOY_H__
00003
00004 #include <cstddef>
00005 #include <sys/types.h>
00006
00007 #include <awds/NodeId.h>
00008
00009 namespace awds{
00010 class FloodHistory {
00011
00012 public:
00013
00014 struct Entry {
00015 NodeId id;
00016 u_int16_t seq;
00017 };
00018
00019
00020 size_t size;
00021 size_t start, end;
00022
00023 Entry *hist;
00024
00025 FloodHistory() : size(0x80) {
00026 start = 0;
00027 end = 0;
00028
00029 hist = new Entry[size];
00030 }
00031
00032
00033 ~FloodHistory() {
00034 delete hist;
00035 }
00036
00037 void insert(const NodeId& id, u_int16_t seq) {
00038 end = ( end + 1 ) % size;
00039 hist[end].id = id;
00040 hist[end].seq = seq;
00041 if ( end == start)
00042 start = (start + 1) % size;
00043 }
00044
00045 void printHistoryOfNode(const NodeId& id);
00046
00047 bool contains(const NodeId& id, u_int16_t seq) const;
00048
00049
00050 };
00051 }
00052
00053 #endif //FLOODHISTOY_H__
00054
00055
00056
00057
00058
00059