X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FSocketSource.hh;h=c41e314dc6e3e31cc31f3b8d82b1e3e79c6fcfd0;hb=ff4249b4a9c23236b2e56dcd593c91a5c58f7b75;hp=ceb5bc83475e02cd76dd9694df8187e055345cba;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/SocketSource.hh b/senf/PPI/SocketSource.hh index ceb5bc8..c41e314 100644 --- a/senf/PPI/SocketSource.hh +++ b/senf/PPI/SocketSource.hh @@ -27,11 +27,11 @@ #define HH_SENF_PPI_SocketSource_ 1 // Custom includes -#include "../Packets/Packets.hh" -#include "../Socket/ClientSocketHandle.hh" -#include "../Socket/SocketPolicy.hh" -#include "../Socket/ReadWritePolicy.hh" -#include "../Socket/FramingPolicy.hh" +#include +#include +#include +#include +#include #include "Module.hh" #include "Connectors.hh" #include "IOEvent.hh" @@ -46,7 +46,7 @@ namespace ppi { This read helper will read a datagram from a datagram socket. This datagram will then be interpreted as a packet of type \a Packet as defined in the packet library. \a Packet - defaults to DataPacket (type DataPacketType), which will place the data uninterpreted + defaults to DataPacket (type DataPacketType), which will place the data uninterpreted into a packet data structure. */ template @@ -105,7 +105,7 @@ namespace module { \ingroup io_modules */ template > - class ActiveSocketSource + class ActiveSocketSource : public Module { SENF_PPI_MODULE(ActiveSocketSource); @@ -113,9 +113,9 @@ namespace module { public: typedef typename Reader::Handle Handle; ///< Handle type requested by the reader - connector::ActiveOutput output; + connector::ActiveOutput output; ///< Output connector to which the data received is written - + ActiveSocketSource(); ///< Create non-connected reader /**< The reader will be disabled until a socket is set \pre Requires \a Reader to be default constructible */ @@ -139,13 +139,48 @@ namespace module { void handle(Handle handle); ///< Set handle /**< Assigning an empty or in-valid() handle will disable the module until a new, valid handle is assigned. */ - private: + Handle handle_; + IOEvent event_; + Reader reader_; + void read(); - + }; + + + template > + class ActiveBurstSocketSource + : public Module + { + SENF_PPI_MODULE(ActiveBurstSocketSource); + + public: + typedef typename Reader::Handle Handle; ///< Handle type requested by the reader + + connector::ActiveOutput output; + ///< Output connector to which the data received is written + + ActiveBurstSocketSource(unsigned max_burst); + explicit ActiveBurstSocketSource(Reader reader, unsigned max_burst); + explicit ActiveBurstSocketSource(Handle handle, unsigned max_burst); + ActiveBurstSocketSource(Handle handle, Reader reader, unsigned max_burst); + + 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. */ + + unsigned maxBurst() const; + void maxBurst(unsigned max_burst); + + private: Handle handle_; IOEvent event_; Reader reader_; + unsigned maxBurst_; + + void read(); }; }}}