User Manual, Developers Guide and API Documentation

FunctionalUnitRC.hpp

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 #ifndef WNS_LDK_FUNCTIONALUNITRC_HPP
00014 #define WNS_LDK_FUNCTIONALUNITRC_HPP
00015 
00016 #include <WNS/ldk/FunctionalUnit.hpp>
00017 #include <WNS/ldk/HasConnector.hpp>
00018 #include <WNS/ldk/GetHasConnector.hpp>
00019 #include <WNS/ldk/Connector.hpp>
00020 #include <WNS/ldk/HasReceptor.hpp>
00021 #include <WNS/ldk/GetHasReceptor.hpp>
00022 #include <WNS/ldk/Receptor.hpp>
00023 #include <WNS/ldk/HasDeliverer.hpp>
00024 #include <WNS/ldk/GetHasDeliverer.hpp>
00025 #include <WNS/ldk/Deliverer.hpp>
00026 
00027 namespace wns { namespace ldk {
00028 
00029         template <typename CLASS>
00030         class FunctionalUnitRC
00031             : public FunctionalUnit,
00032               public HasConnector<>,
00033               public HasReceptor<>,
00034               public HasDeliverer<>
00035         {
00036         public:
00037             FunctionalUnitRC(CLASS* fu)
00038                 : fu_(fu)
00039             {}
00040 
00041             virtual
00042             ~FunctionalUnitRC()
00043             {}
00044 
00045             template <typename T>
00046             Connector*
00047             getPortConnector() const
00048             {
00049                 return fu_->GetHasConnector<typename T::PortType>::getHasConnector()->getConnector();
00050             }
00051 
00052             template <typename T>
00053             Receptor*
00054             getPortReceptor() const
00055             {
00056                 return fu_->GetHasReceptor<typename T::PortType>::getHasReceptor()->getReceptor();
00057             }
00058 
00059             template <typename T>
00060             Deliverer*
00061             getPortDeliverer() const
00062             {
00063                 return fu_->GetHasDeliverer<typename T::PortType>::getHasDeliverer()->getDeliverer();
00064             }
00065 
00066             virtual bool
00067             doIsAccepting(const CompoundPtr&) const
00068             {
00069                 wns::Exception e;
00070                 e << "doIsAccepting(const CompoundPtr&) of RC FU may not be called!";
00071                 throw e;
00072             }
00073 
00074             virtual void
00075             doSendData(const CompoundPtr&)
00076             {
00077                 wns::Exception e;
00078                 e << "doSendData(const CompoundPtr&) of RC FU may not be called!";
00079                 throw e;
00080             }
00081 
00082             virtual void
00083             doWakeup()
00084             {
00085                 wns::Exception e;
00086                 e << "doWakeup() of RC FU may not be called!";
00087                 throw e;
00088             }
00089 
00090             virtual void
00091             doOnData(const CompoundPtr&)
00092             {
00093                 wns::Exception e;
00094                 e << "doOnData(const CompoundPtr&) of RC FU may not be called!";
00095                 throw e;
00096             }
00097 
00098         private:
00099             CLASS* fu_;
00100         };
00101 
00102     } //ldk
00103 } //wns
00104 
00105 #endif // WNS_LDK_FUNCTIONALUNITRC_HPP

Generated on Thu May 24 03:31:40 2012 for openWNS by  doxygen 1.5.5