![]() |
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-2007 00006 * Chair of Communication Networks (ComNets) 00007 * Kopernikusstr. 5, D-52074 Aachen, Germany 00008 * phone: ++49-241-80-27910, 00009 * fax: ++49-241-80-22242 00010 * email: info@openwns.org 00011 * www: http://www.openwns.org 00012 * _____________________________________________________________________________ 00013 * 00014 * openWNS is free software; you can redistribute it and/or modify it under the 00015 * terms of the GNU Lesser General Public License version 2 as published by the 00016 * Free Software Foundation; 00017 * 00018 * openWNS is distributed in the hope that it will be useful, but WITHOUT ANY 00019 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 00020 * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00021 * details. 00022 * 00023 * You should have received a copy of the GNU Lesser General Public License 00024 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00025 * 00026 ******************************************************************************/ 00027 00028 #include <WNS/ldk/tools/Compressor.hpp> 00029 00030 using namespace wns::ldk::tools; 00031 00032 STATIC_FACTORY_REGISTER_WITH_CREATOR( 00033 Compressor, 00034 wns::ldk::FunctionalUnit, 00035 "wns.ldk.tools.Compressor", 00036 wns::ldk::FUNConfigCreator); 00037 00038 Compressor::Compressor(fun::FUN* fun, const wns::pyconfig::View& config): 00039 wns::ldk::fu::Plain<Compressor, wns::ldk::EmptyCommand>(fun), 00040 reduction_(config.get<Bit>("reduction")) 00041 { 00042 } 00043 00044 void Compressor::calculateSizes(const CommandPool* commandPool, Bit& commandPoolSize, Bit& dataSize) const 00045 { 00046 getFUN()->getProxy()->calculateSizes(commandPool, commandPoolSize, dataSize, this); 00047 Command* command = getFUN()->getProxy()->getCommand(commandPool, this); 00048 00049 dataSize -= reduction_; 00050 assure(dataSize >= 0, "Compressor has reduced size of payload data below 0"); 00051 } 00052 00053 00054 void 00055 Compressor::doSendData( const CompoundPtr& compound ) 00056 { 00057 activateCommand(compound->getCommandPool()); 00058 getConnector()->getAcceptor( compound )->sendData(compound); 00059 } 00060 00061 void 00062 Compressor::doOnData( const CompoundPtr& compound ) 00063 { 00064 getDeliverer()->getAcceptor( compound )->onData( compound ); 00065 } 00066 00067 bool 00068 Compressor::doIsAccepting(const CompoundPtr& compound) const 00069 { 00070 CompoundPtr copy = compound->copy(); 00071 activateCommand( copy->getCommandPool() ); 00072 return getConnector()->hasAcceptor(copy); 00073 } 00074 00075 void 00076 Compressor::doWakeup() 00077 { 00078 getReceptor()->wakeup(); 00079 }
1.5.5