00001 #ifndef D__TTMetric
00002 #define D__TTMetric
00003
00004 #include <awds/UCastMetric.h>
00005 #include <map>
00006
00007 namespace awds {
00008 class gea2mad;
00009 class TTMetric : public UCastMetric {
00010 public:
00011 struct NodeData {
00012 int tt;
00013 bool active;
00014 gea::AbsTime lastsend;
00015
00016 NodeData() : tt(RTopology::max_quality()), active(true), lastsend(gea::AbsTime::t0()) {
00017 }
00018 };
00019 typedef std::map<NodeId,NodeData> TTData;
00020 TTData ttData;
00021 gea::Blocker blocker;
00022 gea::Duration interval;
00023
00024 virtual void on_recv(BasePacket *p) {}
00025 virtual void on_wait(gea::Handle *h,gea::AbsTime t);
00026
00027 bool debug;
00028 unsigned int packetSize;
00029
00030 TTMetric(Routing *r);
00031 virtual ~TTMetric();
00032 void start();
00033 gea2mad *g2m;
00034 virtual int update();
00035 virtual RTopology::link_quality_t my_get_quality(NodeDescr &ndescr);
00036 virtual uint32_t my_calculate(RTopology::link_quality_t forward,RTopology::link_quality_t backward);
00037 virtual std::string get_values();
00038
00039 virtual void addNode(NodeId &nodeId);
00040 virtual void begin_update();
00041 virtual void end_update();
00042 };
00043 }
00044
00045 #endif // D__TTMetric
00046
00047
00048
00049
00050
00051