![]() |
User Manual, Developers Guide and API Documentation |
![]() |
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
1.5.5