X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FSocketSink.hh;h=ee944ddf8ba9c46106bc00bf7fd3109a9b1688f9;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=e87b66fe620d4db05aab914777a1d21505bfb005;hpb=09b4d2c4934a5ea35d208cd22573e0e877ad54c8;p=senf.git diff --git a/PPI/SocketSink.hh b/PPI/SocketSink.hh index e87b66f..ee944dd 100644 --- a/PPI/SocketSink.hh +++ b/PPI/SocketSink.hh @@ -56,6 +56,7 @@ namespace ppi { senf::DatagramFramingPolicy, senf::ConnectedCommunicationPolicy>::policy > Handle; ///< Handle type supported by this writer + typedef Packet PacketType; void operator()(Handle handle, Packet const & packet); ///< Write \a packet to \a handle @@ -65,19 +66,32 @@ namespace ppi { \param[in] packet Packet to write */ }; + /** \brief Writer sending data with ClientSocketHandle::writeto() + + This writer will send out data using ClientSocketHandle::writeto(). The target address can + be specified in the writer constructor and can be adjusted at any time. + + If no target address is set, incoming data will be silently dropped. + */ template class TargetDgramWriter { public: typedef HandleType Handle; + typedef Packet PacketType; - TargetDgramWriter(); + TargetDgramWriter(); ///< Create TargetDgramWriter with unset target address TargetDgramWriter(typename Handle::Address const & target); + ///< Create TargetDgramWriter sending to \a target - typename Handle::Address target() const; - void target(typename Handle::Address const & target); + typename Handle::Address target() const; ///< Get current target address + void target(typename Handle::Address const & target); ///< Set target address - void operator()(Handle handle, Packet const & packet); + void operator()(Handle handle, Packet const & packet); ///< Write \a packet to \a handle + /**< Write the complete \a packet as a datagram to \a + handle. + \param[in] handle Handle to write data to + \param[in] packet Packet to write */ private: typename Handle::Address target_; @@ -92,6 +106,7 @@ namespace ppi { senf::MakeSocketPolicy< senf::WriteablePolicy, senf::DatagramFramingPolicy>::policy > Handle; ///< Handle type supported by this writer + typedef Packet PacketType; void source(senf::INet4Address & source); senf::INet4Address source(); @@ -120,6 +135,7 @@ namespace ppi { senf::MakeSocketPolicy< senf::WriteablePolicy, senf::DatagramFramingPolicy>::policy > Handle; ///< Handle type supported by this writer + typedef Packet PacketType; void source(senf::INet6Address & source); senf::INet6Address source(); @@ -163,6 +179,7 @@ namespace module { { public: typedef unspecified Handle; // type of handle requested + typedef unspecified_type PacketType // type of packet read SomeWriter(); // EITHER default constructible OR SomeWriter(SomeWriter const & other); // copy constructible @@ -182,7 +199,7 @@ namespace module { public: typedef typename Writer::Handle Handle; ///< Handle type requested by writer - connector::ActiveInput<> input; ///< Input connector from which data is received + connector::ActiveInput input; ///< Input connector from which data is received ActiveSocketSink(); ///< Create non-connected writer /**< The writer will be disabled until a socket is set @@ -238,6 +255,7 @@ namespace module { { public: typedef unspecified Handle; // type of handle requested + typedef unspecified_type PacketType // type of packet read SomeWriter(); // EITHER default constructible SomeWriter(SomeWriter const & other); // OR copy constructible @@ -257,7 +275,7 @@ namespace module { public: typedef typename Writer::Handle Handle; ///< Handle type requested by writer - connector::PassiveInput<> input; ///< Input connector from which data is received + connector::PassiveInput input; ///< Input connector from which data is received PassiveSocketSink(); ///< Create non-connected writer /**< The writer will be disabled until a socket is set