switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / PPI / DebugModules.cci
1 // $Id$
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 //
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at 
9 // http://senf.berlios.de/license.html
10 //
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on, 
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
14 //
15 // Software distributed under the License is distributed on an "AS IS" basis, 
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
17 // for the specific language governing rights and limitations under the License.
18 //
19 // The Original Code is Fraunhofer FOKUS code.
20 //
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
24 //
25 // Contributor(s):
26 //   Stefan Bund <g0dil@berlios.de>
27
28 /** \file
29     \brief DebugModules inline non-template implementation */
30
31 // Custom includes
32 #include "Setup.hh"
33
34 #define prefix_ inline
35 //-/////////////////////////////////////////////////////////////////////////////////////////////////
36
37 //-/////////////////////////////////////////////////////////////////////////////////////////////////
38 // senf::ppi::module::debug::ActiveSource
39
40 prefix_ senf::ppi::module::debug::ActiveSource::ActiveSource()
41 {
42     noroute(output);
43 }
44
45 prefix_ void senf::ppi::module::debug::ActiveSource::submit(Packet const & packet)
46 {
47     output(packet);
48 }
49
50 prefix_ bool senf::ppi::module::debug::ActiveSource::boolean_test()
51     const
52 {
53     return output;
54 }
55
56 //-/////////////////////////////////////////////////////////////////////////////////////////////////
57 // senf::ppi::module::debug::PassiveSource
58
59 prefix_ senf::ppi::module::debug::PassiveSource::PassiveSource()
60 {
61     noroute(output);
62     output.onRequest(&PassiveSource::request);
63 }
64
65 prefix_ void senf::ppi::module::debug::PassiveSource::throttle()
66 {
67     output.throttle();
68 }
69
70 prefix_ void senf::ppi::module::debug::PassiveSource::unthrottle()
71 {
72     output.unthrottle();
73 }
74
75 prefix_ void senf::ppi::module::debug::PassiveSource::submit(Packet const & packet)
76 {
77     packets_.push_back(packet);
78     output.unthrottle();
79 }
80
81 prefix_ bool senf::ppi::module::debug::PassiveSource::empty()
82 {
83     return packets_.empty();
84 }
85
86 prefix_ senf::ppi::module::debug::PassiveSource::size_type
87 senf::ppi::module::debug::PassiveSource::size()
88 {
89     return packets_.size();
90 }
91
92 //-/////////////////////////////////////////////////////////////////////////////////////////////////
93 // private members
94
95 prefix_ void senf::ppi::module::debug::PassiveSource::v_init()
96 {
97     if (empty())
98         output.throttle();
99 }
100
101 //-/////////////////////////////////////////////////////////////////////////////////////////////////
102 // senf::ppi::module::debug::ActiveSink
103
104 prefix_ senf::ppi::module::debug::ActiveSink::ActiveSink()
105 {
106     noroute(input);
107 }
108
109 prefix_ senf::Packet senf::ppi::module::debug::ActiveSink::request()
110 {
111     return input();
112 }
113
114 prefix_ bool senf::ppi::module::debug::ActiveSink::boolean_test()
115     const
116 {
117     return input;
118 }
119
120 //-/////////////////////////////////////////////////////////////////////////////////////////////////
121 // senf::ppi::module::debug::PassiveSink
122
123 prefix_ senf::ppi::module::debug::PassiveSink::PassiveSink()
124 {
125     noroute(input);
126     input.onRequest(&PassiveSink::request);
127 }
128
129 prefix_ void senf::ppi::module::debug::PassiveSink::throttle()
130 {
131     input.throttle();
132 }
133
134 prefix_ void senf::ppi::module::debug::PassiveSink::unthrottle()
135 {
136     input.unthrottle();
137 }
138
139 prefix_ bool senf::ppi::module::debug::PassiveSink::empty()
140 {
141     return packets_.empty();
142 }
143
144 prefix_ senf::ppi::module::debug::PassiveSink::size_type
145 senf::ppi::module::debug::PassiveSink::size()
146 {
147     return packets_.size();
148 }
149
150 prefix_ senf::ppi::module::debug::PassiveSink::iterator
151 senf::ppi::module::debug::PassiveSink::begin()
152 {
153     return packets_.begin();
154 }
155
156 prefix_ senf::ppi::module::debug::PassiveSink::iterator
157 senf::ppi::module::debug::PassiveSink::end()
158 {
159     return packets_.end();
160 }
161
162 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::front()
163 {
164     if (empty())
165         return Packet();
166     else
167         return packets_.front();
168 }
169
170 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::pop_front()
171 {
172     Packet p (front());
173     if (p)
174         packets_.pop_front();
175     return p;
176 }
177
178 prefix_ void senf::ppi::module::debug::PassiveSink::clear()
179 {
180     packets_.erase(packets_.begin(), packets_.end());
181 }
182
183 //-/////////////////////////////////////////////////////////////////////////////////////////////////
184 // senf::ppi::module::debug::ActiveFeederSource
185
186 prefix_ senf::ppi::module::debug::ActiveFeederSource::ActiveFeederSource()
187     : output(feeder.output)
188 {
189     ppi::connect(source,feeder);
190 }
191
192 prefix_ void senf::ppi::module::debug::ActiveFeederSource::submit(Packet packet)
193 {
194     source.submit(packet);
195 }
196
197 prefix_ bool senf::ppi::module::debug::ActiveFeederSource::empty()
198 {
199     return source.empty();
200 }
201
202 prefix_ senf::ppi::module::debug::ActiveFeederSource::size_type
203 senf::ppi::module::debug::ActiveFeederSource::size()
204 {
205     return source.size();
206 }
207
208 //-/////////////////////////////////////////////////////////////////////////////////////////////////
209 // senf::ppi::module::debug::ActiveFeederSink
210
211 prefix_ senf::ppi::module::debug::ActiveFeederSink::ActiveFeederSink()
212     : input(feeder.input)
213 {
214     ppi::connect(feeder, sink);
215 }
216
217 prefix_ bool senf::ppi::module::debug::ActiveFeederSink::empty()
218 {
219     return sink.empty();
220 }
221
222 prefix_ senf::ppi::module::debug::ActiveFeederSink::size_type
223 senf::ppi::module::debug::ActiveFeederSink::size()
224 {
225     return sink.size();
226 }
227
228 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
229 senf::ppi::module::debug::ActiveFeederSink::begin()
230 {
231     return sink.begin();
232 }
233
234 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
235 senf::ppi::module::debug::ActiveFeederSink::end()
236 {
237     return sink.end();
238 }
239
240 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::front()
241 {
242     return sink.front();
243 }
244
245 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::pop_front()
246 {
247     return sink.pop_front();
248 }
249
250 prefix_ void senf::ppi::module::debug::ActiveFeederSink::clear()
251 {
252     sink.clear();
253 }
254
255 //-/////////////////////////////////////////////////////////////////////////////////////////////////
256 #undef prefix_
257
258 \f
259 // Local Variables:
260 // mode: c++
261 // fill-column: 100
262 // comment-column: 40
263 // c-file-style: "senf"
264 // indent-tabs-mode: nil
265 // ispell-local-dictionary: "american"
266 // compile-command: "scons -u test"
267 // End: