![]() |
User Manual, Developers Guide and API Documentation |
![]() |
00001 /******************************************************************************* 00002 * This file is part of openWNS (open Wireless Network Simulator) 00003 * _____________________________________________________________________________ 00004 * 00005 * Copyright (C) 2004-2009 00006 * Chair of Communication Networks (ComNets) 00007 * Kopernikusstr. 5, D-52074 Aachen, Germany 00008 * email: info@openwns.org 00009 * www: http://www.openwns.org 00010 * _____________________________________________________________________________ 00011 * 00012 * openWNS is free software; you can redistribute it and/or modify it under the 00013 * terms of the GNU Lesser General Public License version 2 as published by the 00014 * Free Software Foundation; 00015 * 00016 * openWNS is distributed in the hope that it will be useful, but WITHOUT ANY 00017 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 00018 * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00019 * details. 00020 * 00021 * You should have received a copy of the GNU Lesser General Public License 00022 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00023 * 00024 ******************************************************************************/ 00025 00031 #ifndef WIMAC_ACKSWITCH_HPP 00032 #define WIMAC_ACKSWITCH_HPP 00033 00034 #include <WNS/ldk/ldk.hpp> 00035 00036 #include <WNS/Cloneable.hpp> 00037 #include <WNS/ldk/CommandTypeSpecifier.hpp> 00038 #include <WNS/ldk/HasDeliverer.hpp> 00039 #include <WNS/ldk/HasConnector.hpp> 00040 #include <WNS/ldk/HasReceptor.hpp> 00041 #include <WNS/ldk/Processor.hpp> 00042 #include <WNS/ldk/FunctionalUnit.hpp> 00043 #include <WNS/ldk/Command.hpp> 00044 #include <WNS/ldk/Classifier.hpp> 00045 #include <WIMAC/ConnectionIdentifier.hpp> 00046 00047 namespace wns { namespace ldk { namespace arq { 00048 class ARQ; 00049 }}} 00050 00051 namespace wimac { 00052 00053 namespace service { 00054 class ConnectionManagerInterface; 00055 } 00056 00060 class AckSwitchCommand 00061 : public wns::ldk::Command 00062 { 00063 public: 00064 struct { 00065 ConnectionIdentifier::CID originalCID; 00066 } peer; 00067 00068 struct { 00069 } local; 00070 00071 struct { 00072 } magic; 00073 }; 00074 00075 /* 00076 * \brief Switches ARQ ACKs to the control connection of an associated SS. 00077 */ 00078 class ACKSwitch : 00079 public wns::ldk::CommandTypeSpecifier<AckSwitchCommand>, 00080 public wns::ldk::HasConnector<>, 00081 public wns::ldk::HasReceptor<>, 00082 public wns::ldk::HasDeliverer<>, 00083 public wns::ldk::Processor<ACKSwitch>, 00084 public wns::Cloneable<ACKSwitch> 00085 { 00086 public: 00093 ACKSwitch( wns::ldk::fun::FUN* fun, const wns::pyconfig::View& config ); 00094 00098 void processIncoming( const wns::ldk::CompoundPtr& compound ); 00099 00100 /* 00101 * \brief Mandatory reimplementation from Processor. 00102 */ 00103 void processOutgoing( const wns::ldk::CompoundPtr& compound ); 00104 00105 void onFUNCreated(); 00106 00107 private: 00108 // friends 00109 wns::ldk::arq::ARQ* arq_; 00110 wns::ldk::CommandTypeSpecifier< wns::ldk::ClassifierCommand >* classifier_; 00111 service::ConnectionManagerInterface* connectionManager_; 00112 }; 00113 } 00114 00115 #endif
1.5.5