![]() |
User Manual, Developers Guide and API Documentation |
![]() |
00001 /****************************************************************************** 00002 * Glue * 00003 * __________________________________________________________________________ * 00004 * * 00005 * Copyright (C) 2005-2006 * 00006 * Lehrstuhl fuer Kommunikationsnetze (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/Component.hpp> 00014 #include <GLUE/convergence/Upper.hpp> 00015 #include <GLUE/convergence/Lower.hpp> 00016 00017 #include <WNS/service/dll/Handler.hpp> 00018 00019 #include <WNS/ldk/fun/Main.hpp> 00020 #include <WNS/ldk/utils.hpp> 00021 00022 #include <WNS/pyconfig/Parser.hpp> 00023 #include <WNS/Exception.hpp> 00024 00025 #include <boost/bind.hpp> 00026 00027 #include <sstream> 00028 00029 using namespace glue; 00030 00031 STATIC_FACTORY_REGISTER_WITH_CREATOR( 00032 Component, 00033 wns::node::component::Interface, 00034 "glue.Component", 00035 wns::node::component::ConfigCreator 00036 ); 00037 00038 Component::Component( 00039 wns::node::Interface* _node, 00040 const wns::pyconfig::View& _config) : 00041 00042 wns::node::component::Component(_node, _config), 00043 fun(NULL), 00044 config(_config), 00045 unicastUpperConvergence(NULL), 00046 broadcastUpperConvergence(NULL), 00047 lowerConvergence(NULL), 00048 sourceMACAddress(wns::service::dll::UnicastAddress(config.get<int>("address"))), 00049 stationType_(StationTypes::fromString(config.get<std::string>("stationType"))), 00050 logger(config.get<wns::pyconfig::View>("logger")) 00051 { 00052 } // Component 00053 00054 void 00055 Component::doStartup() 00056 { 00057 // build FUN 00058 fun = new wns::ldk::fun::Main(this); 00059 wns::ldk::configureFUN(fun, config.get<wns::pyconfig::View>("fun")); 00060 00061 // configure upper convergence (services, MAC address) 00062 unicastUpperConvergence = 00063 dynamic_cast<convergence::UnicastUpper*>( 00064 fun->getFunctionalUnit( 00065 config.get<std::string>("unicastUpperConvergence.commandName"))); 00066 unicastUpperConvergence->setMACAddress(sourceMACAddress); 00067 00068 broadcastUpperConvergence = 00069 dynamic_cast<convergence::BroadcastUpper*>( 00070 fun->getFunctionalUnit( 00071 config.get<std::string>("broadcastUpperConvergence.commandName"))); 00072 broadcastUpperConvergence->setMACAddress(sourceMACAddress); 00073 00074 // register services 00075 addService(getConfig().get<std::string>("unicastDataTransmission"), unicastUpperConvergence); 00076 addService(getConfig().get<std::string>("unicastNotification"), unicastUpperConvergence); 00077 addService(getConfig().get<std::string>("broadcastDataTransmission"), broadcastUpperConvergence); 00078 addService(getConfig().get<std::string>("broadcastNotification"), broadcastUpperConvergence); 00079 00080 // configure lower convergence (services, MAC address) 00081 lowerConvergence = 00082 dynamic_cast<convergence::Lower*>( 00083 fun->getFunctionalUnit( 00084 config.get<std::string>("lowerConvergence.commandName"))); 00085 lowerConvergence->setMACAddress(sourceMACAddress); 00086 } 00087 00088 Component::~Component() 00089 { 00090 delete fun; 00091 } // ~Component 00092 00093 void 00094 Component::onNodeCreated() 00095 { 00096 MESSAGE_BEGIN(NORMAL, logger, m, fun->getName()); 00097 m << ": onNodeCreated(), setting phyiscal layer"; 00098 MESSAGE_END(); 00099 00100 // set services in lower convergence to communicate with lower layer 00101 lowerConvergence->setDataTransmissionService( 00102 getService<wns::service::Service*>( 00103 getConfig().get<std::string>("phyDataTransmission"))); 00104 00105 lowerConvergence->setNotificationService( 00106 getService<wns::service::Service*>( 00107 getConfig().get<std::string>("phyNotification"))); 00108 } // onNodeCreated 00109 00110 void 00111 Component::onWorldCreated() 00112 { 00113 fun->onFUNCreated(); 00114 } // onWorldCreated 00115 00116 void 00117 Component::onShutdown() 00118 { 00119 } // onShutdown 00120 00121
1.5.5