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
00016 class FloodHistory {
00017
00018 public:
00019
00021 struct Entry {
00022 NodeId id;
00023 u_int16_t seq;
00024 };
00025
00026 #define FLOOD_HISTORY_NUM_ENTRIES ((size_t)0x80)
00027
00028 size_t end;
00029 size_t count;
00030
00031 Entry hist[FLOOD_HISTORY_NUM_ENTRIES];
00032
00033 FloodHistory()
00034 {
00035 count = 0;
00036 end = 0;
00037 }
00038
00039 void insert(const NodeId& id, u_int16_t seq) {
00040 end = ( end + 1 ) % FLOOD_HISTORY_NUM_ENTRIES;
00041 hist[end].id = id;
00042 hist[end].seq = seq;
00043 count = std::min(count+1, FLOOD_HISTORY_NUM_ENTRIES);
00044 }
00045
00046 void printHistoryOfNode(const NodeId& id);
00047
00048 bool contains(const NodeId& id, u_int16_t seq) const;
00049
00050 };
00051 }
00052
00053 #endif //FLOODHISTOY_H__
00054
00055
00056
00057
00058
00059