DebugModules.cci
Go to the documentation of this file.
1 //
2 // Copyright (c) 2020 Fraunhofer Institute for Applied Information Technology (FIT)
3 // Network Research Group (NET)
4 // Schloss Birlinghoven, 53754 Sankt Augustin, GERMANY
5 // Contact: support@wiback.org
6 //
7 // This file is part of the SENF code tree.
8 // It is licensed under the 3-clause BSD License (aka New BSD License).
9 // See LICENSE.txt in the top level directory for details or visit
10 // https://opensource.org/licenses/BSD-3-Clause
11 //
12 
13 
14 /** \file
15  \brief DebugModules inline non-template implementation */
16 
17 // Custom includes
18 #include "Setup.hh"
19 
20 #define prefix_ inline
21 //-/////////////////////////////////////////////////////////////////////////////////////////////////
22 
23 //-/////////////////////////////////////////////////////////////////////////////////////////////////
24 // senf::ppi::module::debug::ActiveSource
25 
26 prefix_ senf::ppi::module::debug::ActiveSource::ActiveSource()
27 {
28  noroute(output);
29 }
30 
31 prefix_ void senf::ppi::module::debug::ActiveSource::submit(Packet const & packet)
32 {
33  output(packet);
34 }
35 
36 prefix_ bool senf::ppi::module::debug::ActiveSource::boolean_test()
37  const
38 {
39  return bool(output);
40 }
41 
42 //-/////////////////////////////////////////////////////////////////////////////////////////////////
43 // senf::ppi::module::debug::PassiveSource
44 
45 prefix_ senf::ppi::module::debug::PassiveSource::PassiveSource()
46 {
47  noroute(output);
48  output.onRequest(&PassiveSource::request);
49 }
50 
51 prefix_ void senf::ppi::module::debug::PassiveSource::throttle()
52 {
53  output.throttle();
54 }
55 
56 prefix_ void senf::ppi::module::debug::PassiveSource::unthrottle()
57 {
58  output.unthrottle();
59 }
60 
61 prefix_ void senf::ppi::module::debug::PassiveSource::submit(Packet const & packet)
62 {
63  packets_.push_back(packet);
64  output.unthrottle();
65 }
66 
67 prefix_ bool senf::ppi::module::debug::PassiveSource::empty()
68 {
69  return packets_.empty();
70 }
71 
72 prefix_ senf::ppi::module::debug::PassiveSource::size_type
73 senf::ppi::module::debug::PassiveSource::size()
74 {
75  return packets_.size();
76 }
77 
78 //-/////////////////////////////////////////////////////////////////////////////////////////////////
79 // private members
80 
81 prefix_ void senf::ppi::module::debug::PassiveSource::v_init()
82 {
83  if (empty())
84  output.throttle();
85 }
86 
87 //-/////////////////////////////////////////////////////////////////////////////////////////////////
88 // senf::ppi::module::debug::ActiveSink
89 
90 prefix_ senf::ppi::module::debug::ActiveSink::ActiveSink()
91 {
92  noroute(input);
93 }
94 
95 prefix_ senf::Packet senf::ppi::module::debug::ActiveSink::request()
96 {
97  return input();
98 }
99 
100 prefix_ bool senf::ppi::module::debug::ActiveSink::boolean_test()
101  const
102 {
103  return bool(input);
104 }
105 
106 //-/////////////////////////////////////////////////////////////////////////////////////////////////
107 // senf::ppi::module::debug::PassiveSink
108 
109 prefix_ senf::ppi::module::debug::PassiveSink::PassiveSink()
110 {
111  noroute(input);
112  input.onRequest(&PassiveSink::request);
113 }
114 
115 prefix_ void senf::ppi::module::debug::PassiveSink::throttle()
116 {
117  input.throttle();
118 }
119 
120 prefix_ void senf::ppi::module::debug::PassiveSink::unthrottle()
121 {
122  input.unthrottle();
123 }
124 
125 prefix_ bool senf::ppi::module::debug::PassiveSink::empty()
126 {
127  return packets_.empty();
128 }
129 
130 prefix_ senf::ppi::module::debug::PassiveSink::size_type
131 senf::ppi::module::debug::PassiveSink::size()
132 {
133  return packets_.size();
134 }
135 
136 prefix_ senf::ppi::module::debug::PassiveSink::iterator
137 senf::ppi::module::debug::PassiveSink::begin()
138 {
139  return packets_.begin();
140 }
141 
142 prefix_ senf::ppi::module::debug::PassiveSink::iterator
143 senf::ppi::module::debug::PassiveSink::end()
144 {
145  return packets_.end();
146 }
147 
148 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::front()
149 {
150  if (empty())
151  return Packet();
152  else
153  return packets_.front();
154 }
155 
156 prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::pop_front()
157 {
158  Packet p (front());
159  if (p)
160  packets_.pop_front();
161  return p;
162 }
163 
164 prefix_ void senf::ppi::module::debug::PassiveSink::clear()
165 {
166  packets_.erase(packets_.begin(), packets_.end());
167 }
168 
169 //-/////////////////////////////////////////////////////////////////////////////////////////////////
170 // senf::ppi::module::debug::ActiveFeederSource
171 
172 prefix_ senf::ppi::module::debug::ActiveFeederSource::ActiveFeederSource()
173  : output(feeder.output)
174 {
175  ppi::connect(source,feeder);
176 }
177 
178 prefix_ void senf::ppi::module::debug::ActiveFeederSource::submit(Packet packet)
179 {
180  source.submit(packet);
181 }
182 
183 prefix_ bool senf::ppi::module::debug::ActiveFeederSource::empty()
184 {
185  return source.empty();
186 }
187 
188 prefix_ senf::ppi::module::debug::ActiveFeederSource::size_type
189 senf::ppi::module::debug::ActiveFeederSource::size()
190 {
191  return source.size();
192 }
193 
194 //-/////////////////////////////////////////////////////////////////////////////////////////////////
195 // senf::ppi::module::debug::ActiveFeederSink
196 
197 prefix_ senf::ppi::module::debug::ActiveFeederSink::ActiveFeederSink()
198  : input(feeder.input)
199 {
200  ppi::connect(feeder, sink);
201 }
202 
203 prefix_ bool senf::ppi::module::debug::ActiveFeederSink::empty()
204 {
205  return sink.empty();
206 }
207 
208 prefix_ senf::ppi::module::debug::ActiveFeederSink::size_type
209 senf::ppi::module::debug::ActiveFeederSink::size()
210 {
211  return sink.size();
212 }
213 
214 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
215 senf::ppi::module::debug::ActiveFeederSink::begin()
216 {
217  return sink.begin();
218 }
219 
220 prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator
221 senf::ppi::module::debug::ActiveFeederSink::end()
222 {
223  return sink.end();
224 }
225 
226 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::front()
227 {
228  return sink.front();
229 }
230 
231 prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::pop_front()
232 {
233  return sink.pop_front();
234 }
235 
236 prefix_ void senf::ppi::module::debug::ActiveFeederSink::clear()
237 {
238  sink.clear();
239 }
240 
241 //-/////////////////////////////////////////////////////////////////////////////////////////////////
242 #undef prefix_
243 
244 
245 // Local Variables:
246 // mode: c++
247 // fill-column: 100
248 // comment-column: 40
249 // c-file-style: "senf"
250 // indent-tabs-mode: nil
251 // ispell-local-dictionary: "american"
252 // compile-command: "scons -u test"
253 // End: