X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FSocketSource.hh;h=3c78d5851fc9b74b1dc29a7b9d4245cb7d8a848a;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=b0544360862c7e698d6e4f4348f017b1ebc562e7;hpb=ed0e2329281a50f80be8425938c17515fa70661b;p=senf.git diff --git a/PPI/SocketSource.hh b/PPI/SocketSource.hh index b054436..3c78d58 100644 --- a/PPI/SocketSource.hh +++ b/PPI/SocketSource.hh @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Copyright (C) 2007 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -23,8 +23,8 @@ /** \file \brief SocketSource public header */ -#ifndef HH_SocketSource_ -#define HH_SocketSource_ 1 +#ifndef HH_SENF_PPI_SocketSource_ +#define HH_SENF_PPI_SocketSource_ 1 // Custom includes #include "../Packets/Packets.hh" @@ -53,6 +53,7 @@ namespace ppi { class DgramReader { public: + typedef Packet PacketType; typedef senf::ClientSocketHandle< senf::MakeSocketPolicy< senf::ReadablePolicy, senf::DatagramFramingPolicy >::policy > Handle; @@ -82,7 +83,7 @@ namespace module { \code senf::ppi::module::ActiveSocketSource< senf::ppi::DgramReader > source; \endcode - declares a \a reader module reading senf::EthrtnetPacket's. + declares a \a reader module reading senf::EthernetPacket's A \a Reader must fulfill the following interface: \code @@ -90,11 +91,12 @@ namespace module { { public: typedef unspecified_type Handle; // type of handle requested + typedef unspecified_type PacketType // type of packet returned SomeReader(); // EITHER default constructible SomeReader(SomeReader const & other); // OR copy constructible - Packet operator()(Handle handle); // extraction function + PacketType operator()(Handle handle); // extraction function }; \endcode Whenever the FileHandle object is ready for reading, the \a Reader's \c operator() is called @@ -111,9 +113,16 @@ namespace module { public: typedef typename Reader::Handle Handle; ///< Handle type requested by the reader - connector::ActiveOutput output; ///< Output connector to which the data received is written + connector::ActiveOutput output; + ///< Output connector to which the data received is written - ActiveSocketSource(Handle handle); ///< Create new reader for the given handle + ActiveSocketSource(); ///< Create non-connected reader + /**< The reader will be disabled until a socket is set + \pre Requires \a Reader to be default constructible */ + explicit ActiveSocketSource(Reader reader); ///< Create non-connected reader + /**< The reader will be disabled until a socket is set + \pre Requires \a Reader to be copy constructible */ + explicit ActiveSocketSource(Handle handle); ///< Create new reader for the given handle /**< Data will be read from \a handle and be parsed by \a Reader. \pre Requires \a Reader to be default constructible @@ -126,10 +135,11 @@ namespace module { \param[in] handle Handle to read data from */ Reader & reader(); ///< Access Reader helper + Handle handle(); ///< Access handle + void handle(Handle handle); ///< Set handle + /**< Assigning an empty or in-valid() handle will disable + the module until a new, valid handle is assigned. */ - void replaceHandle(Handle newHandle); - ///< Replace the handle from which the packets are read - private: void read();