⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recvmanager.hh

📁 COPE the first practical network coding scheme which is developped on click
💻 HH
字号:
#ifndef RECVMANAGER_HH#define RECVMANAGER_HH#include <click/element.hh>#include <click/bighashmap.hh>#include <click/packet.hh>#include <click/timestamp.hh>#include <click/vector.hh>#include <map>#include <ext/slist>#include "aliastable.hh"class RecvManager : public Element {public:  RecvManager();  ~RecvManager();  const char *class_name() const		{ return "RecvManager"; }  int configure(Vector<String> &, ErrorHandler *);  void *cast(const char *n);  void add_handlers();  static int enable_acks(const String &arg, Element *e, void *, ErrorHandler *errh);  void set_enable_acks(bool ea) {_enable_acks = ea;}  bool register_packet_to_ack(Packet *, int);  WritablePacket* get_acks(bool, int);  uint32_t get_next_ack_time();private:  class AckState {  public:    uint16_t _seq;    bool _acked;    uint32_t _timeout;        AckState() : _seq(0), _acked(0), _timeout(0) {};    AckState(uint16_t seq, bool acked, uint32_t to) : _seq(seq), _acked(acked), _timeout(to) {}    AckState(uint16_t seq, uint32_t now) : _seq(seq), _acked(0), _timeout(now) {}  };  class NbrState {  public:    uint8_t _alias;    uint32_t _nacks;    NbrState() : _alias(0), _nacks(0) {}    NbrState(uint8_t alias, int nacks) : _alias(alias), _nacks(nacks) {}    NbrState(uint8_t alias) : _alias(alias), _nacks(1) {}  };  class AckUnit {  public:    uint8_t _alias;    uint16_t _seq;    uint8_t _bmp;    AckUnit(uint8_t alias, uint16_t seq, uint8_t bmp) : _alias(alias), _seq(seq), _bmp(bmp) {}  };  typedef Vector<AckUnit> AckVector;  typedef __gnu_cxx::slist<AckState *> AckStateList;  typedef __gnu_cxx::slist<NbrState *> NbrStateList;  typedef HashMap <uint8_t, AckStateList *> PendingAcks;   // acks per neighbor  typedef std::map<int32_t, NbrStateList *> TimeoutList;        // timeout of acks  typedef HashMap<uint8_t, uint8_t> NbrList;  PendingAcks _pending;  TimeoutList _timedout;  AliasTable *_aliases;  uint32_t _ack_timeout;  uint32_t _max_acks;  bool _enable_acks;  AckVector * get_acks_timeout(uint32_t, NbrList &);  WritablePacket *make_packet(AckVector *);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -