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

📄 connection.cc

📁 This documentation is based on the following versions:- pre-release of the wimax model developed by
💻 CC
字号:
/* 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 */#include "connection.h"#include "connectionmanager.h"#include "mac802_16.h"static int basicIndex = BASIC_CID_START;static int primaryIndex = PRIMARY_CID_START;static int transportIndex = TRANSPORT_SEC_CID_START;static int multicastIndex = MULTICAST_CID_START;/** * Constructor used by BS to automatically assign CIDs * @param type The connection type.  */Connection::Connection (ConnectionType_t type) : peer_(0), 						 frag_status_(FRAG_NOFRAG), 						 frag_nb_(0), 						 frag_byte_proc_(0),						 frag_enable_(true){   switch (type) {   case CONN_INIT_RANGING:     cid_ = INITIAL_RANGING_CID;     break;   case CONN_AAS_INIT_RANGING:     cid_ = AAS_INIT_RANGIN_CID;     break;   case CONN_PADDING:     cid_ = PADDING_CID;     break;   case CONN_BROADCAST:     cid_ = BROADCAST_CID;     break;   case CONN_MULTICAST_POLLING:     cid_ = multicastIndex++;     assert (multicastIndex <= MULTICAST_CID_STOP);     break;   case CONN_BASIC:     cid_ = basicIndex++;     assert (basicIndex <= BASIC_CID_STOP);     break;   case CONN_PRIMARY:     cid_ = primaryIndex++;     assert (primaryIndex <= PRIMARY_CID_STOP);       break;   case CONN_SECONDARY:   case CONN_DATA:     cid_ = transportIndex++;     assert (transportIndex <= TRANSPORT_SEC_CID_STOP);     break;   default:     fprintf (stderr, "Unsupported connection type\n");     exit (1);   }   type_ = type;   queue_ = new PacketQueue();}/** * Constructor used by SSs when the CID is already known * @param type The connection type * @param cid The connection cid */Connection::Connection (ConnectionType_t type, int cid) : peer_(0), 							  frag_status_(FRAG_NOFRAG), 							  frag_nb_(0), 							  frag_byte_proc_(0),							  frag_enable_(true){  cid_ = cid;  type_ = type;  queue_ = new PacketQueue();}/** * Destructor */Connection::~Connection (){  flush_queue ();}/** * Set the connection manager * @param manager The Connection manager  */void Connection::setManager (ConnectionManager *manager){  manager_ = manager;}/** * Enqueue the given packet * @param p The packet to enqueue */void Connection::enqueue (Packet * p) {  queue_->enque (p);}/** * Dequeue a packet from the queue * @param p The packet to enqueue */Packet * Connection::dequeue () {  return queue_->deque ();}/** * Flush the queue and return the number of packets freed * @return The number of packets flushed */int Connection::flush_queue(){  int i=0;  Packet *p;  while ( (p=queue_->deque()) ) {    manager_->getMac()->drop(p, "CON");    i++;  }  return i;}/** * Return queue size in bytes */int Connection::queueByteLength () {  return queue_->byteLength ();}/** * Return queue size in bytes */int Connection::queueLength () {  return queue_->length ();}/**  * Update the fragmentation information * @param status The new fragmentation status * @param index The new fragmentation index * @param bytes The number of bytes  */void Connection::updateFragmentation (fragment_status status, int index, int bytes){  frag_status_ = status;  frag_nb_ = index;  frag_byte_proc_ = bytes;}

⌨️ 快捷键说明

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