Utils: Implement Tags.hh and move 'senf::noinit' and 'senf::nothrow' there
[senf.git] / PPI / SocketSource.ct
index f38f045..2d9e881 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
 // Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Fraunhofer Institute for Open Communication Systems (FOKUS) 
+// Competence Center NETwork research (NET), St. Augustin, GERMANY 
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 ///////////////////////////////ct.p////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::PacketSource<Packet>
+// senf::ppi::DgramReader<Packet>
 
 template <class Packet>
-prefix_ Packet senf::ppi::PacketSource<Packet>::operator()(Handle handle)
+prefix_ Packet senf::ppi::DgramReader<Packet>::operator()(Handle handle)
 {
-    Packet packet (Packet::create(Packet::noinit));
+    Packet packet (Packet::create(senf::noinit));
     handle.read(packet.data(),0u);
     return packet;
 }
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::module::ActiveSocketSource<Source>
+// senf::ppi::module::ActiveSocketSource<Reader>
 
-template <class Source>
-prefix_ senf::ppi::module::ActiveSocketSource<Source>::
+template <class Reader>
+prefix_ senf::ppi::module::ActiveSocketSource<Reader>::
 ActiveSocketSource(Handle handle)
     : handle_(handle), event_(handle_, IOEvent::Read), reader_()
 {
@@ -53,11 +53,20 @@ ActiveSocketSource(Handle handle)
     route(event_, output);
 }
 
+template <class Reader>
+prefix_ senf::ppi::module::ActiveSocketSource<Reader>::ActiveSocketSource(Handle handle,
+                                                                          Reader reader)
+    : handle_(handle), event_(handle_, IOEvent::Read), reader_(reader)
+{
+    registerEvent( event_, &ActiveSocketSource::read );
+    route(event_, output);
+}
+
 ////////////////////////////////////////
 // private members
 
-template <class Source>
-prefix_ void senf::ppi::module::ActiveSocketSource<Source>::read()
+template <class Reader>
+prefix_ void senf::ppi::module::ActiveSocketSource<Reader>::read()
 {
     output(reader_(handle_));
 }