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

📄 contentionrequest.h

📁 Ns2下Wimax的代码
💻 H
字号:
/* This software was developed at the National Institute of Standards and * Technology by employees of the Federal Government in the course of * their official duties. Pursuant to title 17 Section 105 of the United * States Code this software is not subject to copyright protection and * is in the public domain. * NIST assumes no responsibility whatsoever for its use by other parties, * and makes no guarantees, expressed or implied, about its quality, * reliability, or any other characteristic. * <BR> * We would appreciate acknowledgement if the software is used. * <BR> * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING * FROM THE USE OF THIS SOFTWARE. * </PRE></P> * @author  rouil */#ifndef CONTENTIONREQUEST_H#define CONTENTIONREQUEST_H#include "mac802_16.h"#include "mac802_16timer.h"class ContentionSlot;class RngContentionSlot;class BwContentionSlot;class ContentionTimer;class Mac802_16;class ContentionRequest;/** Timer for backoff */class WimaxBackoffTimer : public WimaxTimer { public:  WimaxBackoffTimer(ContentionRequest *c, Mac802_16 *m) : WimaxTimer(m) {c_=c;}    void	handle(Event *e);  void pause(void);  void resume(void); private:  ContentionRequest *c_;}; class ContentionRequest;LIST_HEAD (contentionRequest, ContentionRequest);/** * This class is used to manage contention opportunities * supports list */class ContentionRequest{  friend class WimaxBackoffTimer; public:  /**   * Creates a contention slot for the given frame   * @param s The contention slot    * @param p The packet to send   */  ContentionRequest (ContentionSlot *s, Packet *p);  virtual ~ContentionRequest ();  /**   * Called when timeout expired   */  virtual void expire ();  /**   * Start the timeout timer   */  void starttimeout();  /**    * Pause the backoff timer   */  void pause ();    /**   * Resume the backoff timer   */  void resume ();  /// Chain element to the list  inline void insert_entry_head(struct contentionRequest *head) {    LIST_INSERT_HEAD(head, this, link);  }    /// Chain element to the list  inline void insert_entry(ContentionRequest *elem) {    LIST_INSERT_AFTER(elem, this, link);  }  /// Return next element in the chained list  ContentionRequest* next_entry(void) const { return link.le_next; }  /// Remove the entry from the list  inline void remove_entry() {     LIST_REMOVE(this, link);   } protected:  /**   * The contention slot information   */  ContentionSlot *s_;  /**   * The backoff timer   */  WimaxBackoffTimer *backoff_timer_;  /**   * The timeout timer   */  ContentionTimer *timeout_timer_;  /**   * Type of timer   */  timer_id type_;   /**   * Value for timeout   */  double timeout_;  /**   * The current window size   */  int window_;  /**   * Number of retry   */  int nb_retry_;  /**    * The scheduler to inform about timeout   */  Mac802_16 *mac_;  /**   * The packet to send when the backoff expires   */  Packet *p_;  /**   * Pointer to next in the list   */  LIST_ENTRY(ContentionRequest) link;  //LIST_ENTRY(ContentionRequest); //for magic draw};/** * Class to handle ranging opportunities */class RangingRequest: public ContentionRequest { public:  /**   * Creates a contention slot for the given frame   * @param frame The frame map    */  RangingRequest (ContentionSlot *s, Packet *p);  /**   * Called when timeout expired   */  void expire (); private:};/** * Class to handle bandwidth request opportunities */class BwRequest: public ContentionRequest { public:  /**   * Creates a contention slot for the given frame   * @param frame The frame map    */  BwRequest (ContentionSlot *s, Packet *p, int cid, int length);  /**   * Called when timeout expired   */  void expire ();  /**   * Return the CID for this request   * @return the CID for this request   */  inline int getCID () { return cid_; } private:  /**   * The CID for the request   */  int cid_;  /**   * The size in bytes of the bandwidth requested   */  int size_;};#endif

⌨️ 快捷键说明

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