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: