User Manual, Developers Guide and API Documentation

FlowIDBuilders.cpp

Go to the documentation of this file.
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 <IP/FlowIDBuilders.hpp>
00029 #include <IP/IPHeader.hpp>
00030 
00031 #include <WNS/ldk/fun/FUN.hpp>
00032 
00033 using namespace ip;
00034 
00035 STATIC_FACTORY_REGISTER_WITH_CREATOR(
00036     OutputBuffersFlowIDBuilder,
00037     wns::ldk::KeyBuilder,
00038     "ip.outputBuffersFlowIDBuilder",
00039     wns::ldk::FUNConfigCreator);
00040 
00041 
00042 OutputBuffersFlowIDBuilder::OutputBuffersFlowIDBuilder(wns::ldk::fun::FUN* _fun,
00043                  const wns::pyconfig::View& _config) :
00044     config(_config),
00045     fun(_fun)
00046 {
00047 }
00048 
00049 void
00050 OutputBuffersFlowIDBuilder::onFUNCreated()
00051 {
00052     ipHeaderReader = this->fun->getCommandReader("ip.ipHeader");
00053     assure(ipHeaderReader, "No reader for the IP Header available!");
00054 }
00055 
00056 wns::ldk::ConstKeyPtr
00057 OutputBuffersFlowIDBuilder::operator()(const wns::ldk::CompoundPtr& _compound, int _direction) const
00058 {
00059     assure(ipHeaderReader, "No reader for the IP Header available!");
00060 
00061     // Only outgoing packets are separated. Incoming do not get separated and
00062     // especially not by the local part of the peer entity. We use Address
00063     // 0.0.0.0 for all incoming packets
00064 
00065     if(_direction == 1)
00066     {
00067         // Outgoing Packets
00068         IPCommand* ipHeader = ipHeaderReader->readCommand<IPCommand>(_compound->getCommandPool());
00069         return wns::ldk::ConstKeyPtr(new IPAddressKey(ipHeader->local.nextHop));
00070     }
00071     else
00072     {
00073         // Incoming Packets
00074         wns::service::nl::Address dummy;
00075         return wns::ldk::ConstKeyPtr(new IPAddressKey(dummy));
00076     }
00077 }

Generated on Thu May 24 03:32:15 2012 for openWNS by  doxygen 1.5.5