User Manual, Developers Guide and API Documentation

BERProvider.cpp

Go to the documentation of this file.
00001 /******************************************************************************
00002  * WNS (Wireless Network Simulator)                                           *
00003  * __________________________________________________________________________ *
00004  *                                                                            *
00005  * Copyright (C) 2004-2006                                                    *
00006  * Chair of Communication Networks (ComNets)                                  *
00007  * Kopernikusstr. 16, D-52074 Aachen, Germany                                 *
00008  * phone: ++49-241-80-27910 (phone), fax: ++49-241-80-22242                   *
00009  * email: wns@comnets.rwth-aachen.de                                          *
00010  * www: http://wns.comnets.rwth-aachen.de                                     *
00011  ******************************************************************************/
00012 
00013 #include <GLUE/BERProvider.hpp>
00014 #include <GLUE/BERConsumer.hpp>
00015 
00016 #include <WNS/Assure.hpp>
00017 
00018 #include <iostream>
00019 #include <algorithm>
00020 
00021 using namespace glue;
00022 
00023 BERProvider::BERProvider() :
00024     berConsumers()
00025 {
00026 } // BERProvider
00027 
00028 
00029 BERProvider::~BERProvider()
00030 {
00031     while(!this->berConsumers.empty())
00032     {
00033         BERConsumer* bc = *(this->berConsumers.begin());
00034         bc->onBERProviderDeleted();
00035         this->detachBERConsumer(bc);
00036     }
00037 } // ~BERProvider
00038 
00039 
00040 void
00041 BERProvider::attachBERConsumer(BERConsumer* berConsumer)
00042 {
00043     assure(std::find(berConsumers.begin(),
00044              berConsumers.end(),
00045              berConsumer)
00046            == berConsumers.end(),
00047            "BERConsumer is already added to PERProvider");
00048 
00049     berConsumer->setBERProvider(this);
00050     this->berConsumers.push_back(berConsumer);
00051 } // attachBERConsumer
00052 
00053 
00054 void
00055 BERProvider::detachBERConsumer(BERConsumer* berConsumer)
00056 {
00057     assure(std::find(berConsumers.begin(),
00058              berConsumers.end(),
00059              berConsumer)
00060            != berConsumers.end(),
00061            "unknown BERConsumer");
00062 
00063     berConsumer->setBERProvider(NULL);
00064     this->berConsumers.remove(berConsumer);
00065 } // detachBERConsumer
00066 
00067 
00068 void
00069 BERProvider::notifyBERConsumers(double BER, int packetSize) const
00070 {
00071     BERConsumerContainer::const_iterator itEnd = this->berConsumers.end();
00072     for (BERConsumerContainer::const_iterator it = this->berConsumers.begin();
00073          it != itEnd;
00074          ++it)
00075     {
00076         (*it)->onNewMeasurement(BER, packetSize);
00077     }
00078 } // notifyBERConsumers
00079 
00080 
00081 const BERProvider::BERConsumerContainer&
00082 BERProvider::getBERConsumersAttached() const
00083 {
00084     return this->berConsumers;
00085 } // getBERConsumersAttached
00086 
00087 
00088 

Generated on Mon May 21 03:32:02 2012 for openWNS by  doxygen 1.5.5