![]() |
User Manual, Developers Guide and API Documentation |
![]() |
00001 /****************************************************************************** 00002 * DLLBase (DLL Base classes to create FUN-based DLL) * 00003 * __________________________________________________________________________ * 00004 * * 00005 * Copyright (C) 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 DLL_RANG_HPP 00014 #define DLL_RANG_HPP 00015 00016 #include <WNS/logger/Logger.hpp> 00017 00018 #include <WNS/service/dll/DataTransmission.hpp> 00019 #include <WNS/service/dll/Handler.hpp> 00020 #include <WNS/service/dll/FlowID.hpp> 00021 #include <WNS/node/component/Component.hpp> 00022 #include <WNS/container/Registry.hpp> 00023 00024 #include <WNS/osi/PDU.hpp> 00025 00026 namespace dll { 00038 class RANG : 00039 virtual public wns::service::dll::UnicastDataTransmission, 00040 virtual public wns::service::dll::Notification, 00041 virtual public wns::service::dll::Handler, 00042 public wns::node::component::Component 00043 { 00044 typedef wns::container::Registry<wns::service::dll::UnicastAddress, wns::service::dll::UnicastDataTransmission*> AccessPointLookup; 00045 public: 00046 RANG(wns::node::Interface*, const wns::pyconfig::View&); 00047 virtual ~RANG(){}; 00048 00049 virtual void 00050 registerFlowHandler(wns::service::dll::FlowHandler*){}; 00051 00052 virtual void 00053 registerIRuleControl(wns::service::dll::IRuleControl*){}; 00054 00057 virtual void 00058 sendData( 00059 const wns::service::dll::UnicastAddress& _peer, 00060 const wns::osi::PDUPtr& _data, 00061 wns::service::dll::protocolNumber protocol, 00062 wns::service::dll::FlowID _dllFlowID = wns::service::dll::NoFlowID); 00064 00065 virtual wns::service::dll::UnicastAddress 00066 getMACAddress() const { return wns::service::dll::UnicastAddress();} 00067 00068 00071 virtual void 00072 registerHandler(wns::service::dll::protocolNumber protocol, 00073 wns::service::dll::Handler* _dh); 00075 00079 virtual void onData(const wns::osi::PDUPtr& _data, 00080 wns::service::dll::FlowID _dllFlowID = wns::service::dll::NoFlowID); 00081 00087 bool knowsAddress(wns::service::dll::UnicastAddress _sourceMACAddress); 00088 00089 wns::service::dll::UnicastDataTransmission* 00090 getAccessPointFor(wns::service::dll::UnicastAddress _sourceMACAddress); 00091 00092 void updateAPLookUp(wns::service::dll::UnicastAddress _sourceMACAddress, 00093 wns::service::dll::UnicastDataTransmission* _ap); 00094 00095 void removeAddress(wns::service::dll::UnicastAddress _sourceMACAddress, 00096 wns::service::dll::UnicastDataTransmission* _ap); 00097 00098 virtual 00099 void onData(const wns::osi::PDUPtr& _data, 00100 wns::service::dll::UnicastAddress _sourceMACAddress, 00101 wns::service::dll::UnicastDataTransmission* _ap, 00102 wns::service::dll::FlowID _dllFlowID = wns::service::dll::NoFlowID); 00104 00107 virtual void onNodeCreated(); 00108 virtual void onWorldCreated(); 00109 virtual void onShutdown(); 00111 00112 protected: 00113 virtual void 00114 doStartup(); 00115 AccessPointLookup accessPointLookup; 00116 00117 private: 00121 typedef wns::container::Registry<wns::service::dll::protocolNumber, wns::service::dll::Handler*> DataHandlerRegistry; 00122 00127 DataHandlerRegistry dataHandlerRegistry; 00128 00129 wns::pyconfig::View config; 00130 00131 bool learnAPfromIncomingData; 00132 00133 wns::logger::Logger logger; 00134 }; 00135 } 00136 00137 #endif // NOT defined DLL_RANG_HPP 00138 00139
1.5.5