connectionmanager.h
上传用户:hzie11
上传日期:2013-10-07
资源大小:1487k
文件大小:3k
源码类别:

网络

开发平台:

C/C++

  1. /* This software was developed at the National Institute of Standards and
  2.  * Technology by employees of the Federal Government in the course of
  3.  * their official duties. Pursuant to title 17 Section 105 of the United
  4.  * States Code this software is not subject to copyright protection and
  5.  * is in the public domain.
  6.  * NIST assumes no responsibility whatsoever for its use by other parties,
  7.  * and makes no guarantees, expressed or implied, about its quality,
  8.  * reliability, or any other characteristic.
  9.  * <BR>
  10.  * We would appreciate acknowledgement if the software is used.
  11.  * <BR>
  12.  * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
  13.  * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING
  14.  * FROM THE USE OF THIS SOFTWARE.
  15.  * </PRE></P>
  16.  * @author  rouil
  17.  */
  18. #ifndef CONNECTIONMANAGER_H
  19. #define CONNECTIONMANAGER_H
  20. #include "connection.h"
  21. class Mac802_16;
  22. /**
  23.  * Class ConnectionManager
  24.  * The class handles the list of connections for a Mac 802.16
  25.  */ 
  26. class ConnectionManager {
  27.   friend class Connection;
  28.  public:
  29.   /**
  30.    * 
  31.    * @param mac The mac where the manager belongs
  32.    */
  33.   ConnectionManager (Mac802_16 * mac);
  34.   
  35.   /**
  36.    * Add a connection
  37.    * @param con The connection to add
  38.    * @param incoming true if it is an uplink connection
  39.    */
  40.   void add_connection (Connection* con, bool uplink);
  41.   
  42.   /**
  43.    * Remove the given connection
  44.    * @param connection Remove the given connection
  45.    */
  46.   void remove_connection (Connection* connection);
  47.   /**
  48.    * Remove connection by CID, both directions.
  49.    * @param cid The connection id
  50.    */
  51.   void remove_connection (int cid);
  52.   
  53.   /**
  54.    * Return the connection with the given cid and direction
  55.    * @param cid The connection id
  56.    * @param incoming specifies the direction of the connection
  57.    */
  58.   Connection*  get_connection (int cid, bool uplink);
  59.   
  60.   /**
  61.    * Return the head of the incoming connection list
  62.    */
  63.   Connection* get_up_connection () { return up_con_list_.lh_first; }
  64.   /**
  65.    * Return the head of the outgoing connection list
  66.    */
  67.   Connection* get_down_connection () { return down_con_list_.lh_first; }
  68.   /**
  69.    * Flush the queues. This can be called after switching BS.
  70.    */
  71.   void  flush_queues ();
  72.   
  73.  protected:
  74.   /**
  75.    * Get the value of mac_
  76.    * The Mac where this object is located
  77.    * @return the value of mac_
  78.    */
  79.   inline Mac802_16 * getMac ( ) { return mac_; }
  80.   
  81.  private:
  82.   /**
  83.    * The list of available connections
  84.    */
  85.   Connection* connections_;
  86.   
  87.   /**
  88.    * The Mac where this object is located
  89.    */
  90.   Mac802_16 * mac_;
  91.   
  92.   /**
  93.    * The list of uplink connections
  94.    */
  95.   struct connection up_con_list_;
  96.   /**
  97.    * The list of downlink connections
  98.    */
  99.   struct connection down_con_list_;
  100.   
  101. };
  102. #endif //CONNECTIONMANAGER_H