Utils/Termlib: Extend the completion API
[senf.git] / PPI / SocketSink.cti
index 0c24c9f..07dba5b 100644 (file)
@@ -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 <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 ///////////////////////////////cti.p///////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
+// senf::ppi::TargetDgramWriter<HandleType>
+
+template <class HandleType>
+prefix_ senf::ppi::TargetDgramWriter<HandleType>::TargetDgramWriter()
+{}
+
+template <class HandleType>
+prefix_ senf::ppi::TargetDgramWriter<HandleType>::
+TargetDgramWriter(typename Handle::Address const & target)
+: target_ (target)
+{}
+
+template <class HandleType>
+prefix_ typename senf::ppi::TargetDgramWriter<HandleType>::Handle::Address
+senf::ppi::TargetDgramWriter<HandleType>::target()
+    const
+{
+    return target_;
+}
+
+template <class HandleType>
+prefix_ void
+senf::ppi::TargetDgramWriter<HandleType>::target(typename Handle::Address const & target)
+{
+    target_ = target;
+}
+
+template <class HandleType>
+prefix_ void senf::ppi::TargetDgramWriter<HandleType>::operator()(Handle handle,
+                                                                  Packet const & packet)
+{
+    if (target_)
+        handle.writeto(target_, packet.data());
+}
+
+///////////////////////////////////////////////////////////////////////////
 // senf::ppi::module::ActiveSocketSink<Writer>
 
 template <class Writer>
@@ -39,6 +75,20 @@ prefix_ Writer & senf::ppi::module::ActiveSocketSink<Writer>::writer()
     return writer_;
 }
 
+template <class Writer>
+prefix_ typename senf::ppi::module::ActiveSocketSink<Writer>::Handle
+senf::ppi::module::ActiveSocketSink<Writer>::handle()
+{
+    return handle_;
+}
+
+template <class Writer>
+prefix_ void senf::ppi::module::ActiveSocketSink<Writer>::handle(Handle handle)
+{
+    handle_ = handle;
+    event_.set(handle_, IOEvent::Write);
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::ppi::module::PassiveSocketSink<Writer>
 
@@ -48,6 +98,27 @@ prefix_ Writer & senf::ppi::module::PassiveSocketSink<Writer>::writer()
     return writer_;
 }
 
+template <class Writer>
+prefix_ typename Writer::Handle & senf::ppi::module::PassiveSocketSink<Writer>::handle()
+{
+    return handle_;
+}
+
+template <class Writer>
+prefix_ void senf::ppi::module::PassiveSocketSink<Writer>::handle(Handle handle)
+{
+    handle_ = handle;
+    checkThrottle();
+}
+
+#ifndef DOXYGEN
+template <class Writer>
+prefix_ void senf::ppi::module::PassiveSocketSink<Writer>::replaceHandle(Handle newHandle)
+{
+    handle(newHandle);
+}
+#endif
+
 ///////////////////////////////cti.e///////////////////////////////////////
 #undef prefix_