00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026
00027
00028
00029
00030 #define prefix_
00031
00032
00033
00034
00035
00036 template <class Packet, unsigned MaxSize>
00037 prefix_ Packet senf::ppi::DgramReader<Packet,MaxSize>::operator()(Handle & handle)
00038 {
00039 Packet packet (Packet::create(senf::noinit));
00040 handle.read(packet.data(), MaxSize);
00041 return packet;
00042 }
00043
00044
00045
00046
00047 template <class Reader>
00048 prefix_ senf::ppi::module::ActiveSocketSource<Reader>::ActiveSocketSource()
00049 {
00050 registerEvent( event_, &ActiveSocketSource::read );
00051 route(event_, output);
00052 }
00053
00054 template <class Reader>
00055 prefix_ senf::ppi::module::ActiveSocketSource<Reader>::ActiveSocketSource(Reader reader)
00056 : reader_(reader)
00057 {
00058 registerEvent( event_, &ActiveSocketSource::read );
00059 route(event_, output);
00060 }
00061
00062 template <class Reader>
00063 prefix_ senf::ppi::module::ActiveSocketSource<Reader>::ActiveSocketSource(Handle const & handle)
00064 : handle_(handle), event_(handle_, IOEvent::Read)
00065 {
00066 registerEvent( event_, &ActiveSocketSource::read );
00067 route(event_, output);
00068 }
00069
00070 template <class Reader>
00071 prefix_ senf::ppi::module::ActiveSocketSource<Reader>::ActiveSocketSource(Handle const & handle,
00072 Reader reader)
00073 : handle_(handle), event_(handle_, IOEvent::Read), reader_(reader)
00074 {
00075 registerEvent( event_, &ActiveSocketSource::read );
00076 route(event_, output);
00077 }
00078
00079
00080
00081
00082 template <class Reader>
00083 prefix_ senf::ppi::module::ActiveBurstSocketSource<Reader>::ActiveBurstSocketSource(unsigned max_burst)
00084 : maxBurst_(max_burst)
00085 {
00086 registerEvent( event_, &ActiveBurstSocketSource::read );
00087 route(event_, output);
00088 }
00089
00090 template <class Reader>
00091 prefix_ senf::ppi::module::ActiveBurstSocketSource<Reader>::ActiveBurstSocketSource(Reader reader, unsigned max_burst)
00092 : reader_(reader), maxBurst_(maxBurst)
00093 {
00094 registerEvent( event_, &ActiveBurstSocketSource::read );
00095 route(event_, output);
00096 }
00097
00098 template <class Reader>
00099 prefix_ senf::ppi::module::ActiveBurstSocketSource<Reader>::ActiveBurstSocketSource(Handle const & handle, unsigned max_burst)
00100 : handle_(handle), event_(handle_, IOEvent::Read), maxBurst_(max_burst)
00101 {
00102 registerEvent( event_, &ActiveBurstSocketSource::read );
00103 route(event_, output);
00104 }
00105
00106 template <class Reader>
00107 prefix_ senf::ppi::module::ActiveBurstSocketSource<Reader>::ActiveBurstSocketSource(Handle const & handle,
00108 Reader reader, unsigned max_burst)
00109 : handle_(handle), event_(handle_, IOEvent::Read), reader_(reader), maxBurst_(max_burst)
00110 {
00111 registerEvent( event_, &ActiveBurstSocketSource::read );
00112 route(event_, output);
00113 }
00114
00115 template <class Reader>
00116 prefix_ void senf::ppi::module::ActiveBurstSocketSource<Reader>::maxBurst(unsigned max_burst)
00117 {
00118 maxBurst_ = max_burst;
00119 }
00120
00121 template <class Reader>
00122 prefix_ unsigned senf::ppi::module::ActiveBurstSocketSource<Reader>::maxBurst()
00123 const
00124 {
00125 return maxBurst_;
00126 }
00127
00128 template <class Reader>
00129 prefix_ void senf::ppi::module::ActiveBurstSocketSource<Reader>::read()
00130 {
00131 output(reader_(handle_));
00132 for (unsigned int i = 0; i < maxBurst_; ++i) {
00133 typename Reader::PacketType p (reader_(handle_));
00134 if (p.data().size() > 0)
00135 output( p);
00136 else
00137 break;
00138 }
00139 }
00140
00141
00142 #undef prefix_
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153