PPI: Add missing TargetDgramWriter doku
[senf.git] / PPI / SocketSink.hh
index 83a1d5f..74580cc 100644 (file)
@@ -65,6 +65,36 @@ 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 <em>silently dropped</em>.
+     */
+    template <class HandleType>
+    class TargetDgramWriter
+    {
+    public:
+        typedef HandleType Handle;
+
+        TargetDgramWriter();            ///< Create TargetDgramWriter with unset target address
+        TargetDgramWriter(typename Handle::Address const & target);
+                                        ///< Create TargetDgramWriter sending to \a 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); ///< 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_;
+    };
+
     class IPv4SourceForcingDgramWriter : ConnectedDgramWriter
     {
     public: