Search:

SENF Extensible Network Framework

  • Home
  • Download
  • Wiki
  • BerliOS
  • ChangeLog
  • Browse SVN
  • Bug Tracker
  • Overview
  • Examples
  • HowTos
  • Glossary
  • PPI
  • Packets
  • Scheduler
  • Socket
  • Utils
  • Console
  • Daemon
  • Logger
  • Termlib
  • Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • Directories
  • File List
  • File Members

DebugModules.cci

Go to the documentation of this file.
00001 // $Id: DebugModules.cci 1781 2011-04-11 12:10:19Z tho $
00002 //
00003 // Copyright (C) 2007
00004 // Fraunhofer (FOKUS)
00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY
00006 //     Stefan Bund <g0dil@berlios.de>
00007 //
00008 // This program is free software; you can redistribute it and/or modify
00009 // it under the terms of the GNU General Public License as published by
00010 // the Free Software Foundation; either version 2 of the License, or
00011 // (at your option) any later version.
00012 //
00013 // This program is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 // GNU General Public License for more details.
00017 //
00018 // You should have received a copy of the GNU General Public License
00019 // along with this program; if not, write to the
00020 // Free Software Foundation, Inc.,
00021 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00022 
00026 // Custom includes
00027 #include "Setup.hh"
00028 
00029 #define prefix_ inline
00030 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00031 
00032 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00033 // senf::ppi::module::debug::ActiveSource
00034 
00035 prefix_ senf::ppi::module::debug::ActiveSource::ActiveSource()
00036 {
00037     noroute(output);
00038 }
00039 
00040 prefix_ void senf::ppi::module::debug::ActiveSource::submit(Packet const & packet)
00041 {
00042     output(packet);
00043 }
00044 
00045 prefix_ bool senf::ppi::module::debug::ActiveSource::boolean_test()
00046     const
00047 {
00048     return output;
00049 }
00050 
00051 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00052 // senf::ppi::module::debug::PassiveSource
00053 
00054 prefix_ senf::ppi::module::debug::PassiveSource::PassiveSource()
00055 {
00056     noroute(output);
00057     output.onRequest(&PassiveSource::request);
00058 }
00059 
00060 prefix_ void senf::ppi::module::debug::PassiveSource::throttle()
00061 {
00062     output.throttle();
00063 }
00064 
00065 prefix_ void senf::ppi::module::debug::PassiveSource::unthrottle()
00066 {
00067     output.unthrottle();
00068 }
00069 
00070 prefix_ void senf::ppi::module::debug::PassiveSource::submit(Packet const & packet)
00071 {
00072     packets_.push_back(packet);
00073     output.unthrottle();
00074 }
00075 
00076 prefix_ bool senf::ppi::module::debug::PassiveSource::empty()
00077 {
00078     return packets_.empty();
00079 }
00080 
00081 prefix_ senf::ppi::module::debug::PassiveSource::size_type
00082 senf::ppi::module::debug::PassiveSource::size()
00083 {
00084     return packets_.size();
00085 }
00086 
00087 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00088 // private members
00089 
00090 prefix_ void senf::ppi::module::debug::PassiveSource::v_init()
00091 {
00092     if (empty())
00093         output.throttle();
00094 }
00095 
00096 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00097 // senf::ppi::module::debug::ActiveSink
00098 
00099 prefix_ senf::ppi::module::debug::ActiveSink::ActiveSink()
00100 {
00101     noroute(input);
00102 }
00103 
00104 prefix_ senf::Packet senf::ppi::module::debug::ActiveSink::request()
00105 {
00106     return input();
00107 }
00108 
00109 prefix_ bool senf::ppi::module::debug::ActiveSink::boolean_test()
00110     const
00111 {
00112     return input;
00113 }
00114 
00115 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00116 // senf::ppi::module::debug::PassiveSink
00117 
00118 prefix_ senf::ppi::module::debug::PassiveSink::PassiveSink()
00119 {
00120     noroute(input);
00121     input.onRequest(&PassiveSink::request);
00122 }
00123 
00124 prefix_ void senf::ppi::module::debug::PassiveSink::throttle()
00125 {
00126     input.throttle();
00127 }
00128 
00129 prefix_ void senf::ppi::module::debug::PassiveSink::unthrottle()
00130 {
00131     input.unthrottle();
00132 }
00133 
00134 prefix_ bool senf::ppi::module::debug::PassiveSink::empty()
00135 {
00136     return packets_.empty();
00137 }
00138 
00139 prefix_ senf::ppi::module::debug::PassiveSink::size_type
00140 senf::ppi::module::debug::PassiveSink::size()
00141 {
00142     return packets_.size();
00143 }
00144 
00145 prefix_ senf::ppi::module::debug::PassiveSink::iterator
00146 senf::ppi::module::debug::PassiveSink::begin()
00147 {
00148     return packets_.begin();
00149 }
00150 
00151 prefix_ senf::ppi::module::debug::PassiveSink::iterator
00152 senf::ppi::module::debug::PassiveSink::end()
00153 {
00154     return packets_.end();
00155 }
00156 
00157 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::front()
00158 {
00159     if (empty())
00160         return Packet();
00161     else
00162         return packets_.front();
00163 }
00164 
00165 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::pop_front()
00166 {
00167     Packet p (front());
00168     if (p)
00169         packets_.pop_front();
00170     return p;
00171 }
00172 
00173 prefix_ void senf::ppi::module::debug::PassiveSink::clear()
00174 {
00175     packets_.erase(packets_.begin(), packets_.end());
00176 }
00177 
00178 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00179 // senf::ppi::module::debug::ActiveFeederSource
00180 
00181 prefix_ senf::ppi::module::debug::ActiveFeederSource::ActiveFeederSource()
00182     : output(feeder.output)
00183 {
00184     ppi::connect(source,feeder);
00185 }
00186 
00187 prefix_ void senf::ppi::module::debug::ActiveFeederSource::submit(Packet packet)
00188 {
00189     source.submit(packet);
00190 }
00191 
00192 prefix_ bool senf::ppi::module::debug::ActiveFeederSource::empty()
00193 {
00194     return source.empty();
00195 }
00196 
00197 prefix_ senf::ppi::module::debug::ActiveFeederSource::size_type
00198 senf::ppi::module::debug::ActiveFeederSource::size()
00199 {
00200     return source.size();
00201 }
00202 
00203 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00204 // senf::ppi::module::debug::ActiveFeederSink
00205 
00206 prefix_ senf::ppi::module::debug::ActiveFeederSink::ActiveFeederSink()
00207     : input(feeder.input)
00208 {
00209     ppi::connect(feeder, sink);
00210 }
00211 
00212 prefix_ bool senf::ppi::module::debug::ActiveFeederSink::empty()
00213 {
00214     return sink.empty();
00215 }
00216 
00217 prefix_ senf::ppi::module::debug::ActiveFeederSink::size_type
00218 senf::ppi::module::debug::ActiveFeederSink::size()
00219 {
00220     return sink.size();
00221 }
00222 
00223 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
00224 senf::ppi::module::debug::ActiveFeederSink::begin()
00225 {
00226     return sink.begin();
00227 }
00228 
00229 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
00230 senf::ppi::module::debug::ActiveFeederSink::end()
00231 {
00232     return sink.end();
00233 }
00234 
00235 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::front()
00236 {
00237     return sink.front();
00238 }
00239 
00240 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::pop_front()
00241 {
00242     return sink.pop_front();
00243 }
00244 
00245 prefix_ void senf::ppi::module::debug::ActiveFeederSink::clear()
00246 {
00247     sink.clear();
00248 }
00249 
00250 //-/////////////////////////////////////////////////////////////////////////////////////////////////
00251 #undef prefix_
00252 
00253 
00254 // Local Variables:
00255 // mode: c++
00256 // fill-column: 100
00257 // comment-column: 40
00258 // c-file-style: "senf"
00259 // indent-tabs-mode: nil
00260 // ispell-local-dictionary: "american"
00261 // compile-command: "scons -u test"
00262 // End:

Contact: senf-dev@lists.berlios.de | © 2006-2010 Fraunhofer Institute for Open Communication Systems, Network Research