From 79d1b9ef8cc7b9981a6b0c9a9ba1db182a607ac4 Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Mon, 8 Jun 2009 09:28:22 +0000
Subject: [PATCH] Utils/Console: UDPServer documentation

---
 Utils/Console/Mainpage.dox | 21 ++++++++++++++++++++-
 Utils/Console/UDPServer.hh | 20 ++++++++++++++++++--
 2 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/Utils/Console/Mainpage.dox b/Utils/Console/Mainpage.dox
index b46ce6445..c7270dd20 100644
--- a/Utils/Console/Mainpage.dox
+++ b/Utils/Console/Mainpage.dox
@@ -524,7 +524,7 @@
     \subsection console_noninteractive Non-interactive network console
 
     After a new connection is established, the console server waits a short time for data to arrive.
-    arrive. Only if nothing happens in the first 500ms, an interactive session is initialized.
+    Only if nothing happens in the first 500ms, an interactive session is initialized.
 
     By sending data immediately after opening the connection, the console is switched into
     non-interactive mode. In this mode, no prompt is displayed. In this mode, commands are \e not
@@ -549,6 +549,25 @@
 
     Commands are executed as soon as the terminating character (';', '{' or '}') is received or when
     the sending end of the connection is closed.    
+
+    \section console_udp Non-interactive UDP console
+
+    The UDP console allows to script the console tree via UDP packets. Every UDP packet must be a
+    complete command (or sequence of commands). The combined reply of all these commands will be
+    returned in a single UDP packet. This reply can be disabled or directed to a different address. 
+
+    To start a UDP server, just create an instance of the senf::console::UDPServer class
+    \code
+    senf::console::UDPServer server (senf::INet4SocketAddress("127.0.0.1:23232"));
+    \endcode
+    (Remember to enter the scheduler main-loop for processing)
+
+    Commands may then be sent to this UDP console e.g. using netcat
+    <pre>
+    $ echo "cd sys; ls" | nc6 -u --half-close localhost 23232 2>/dev/null
+    </pre>
+
+    \see senf::console::UDPServer
  */
 
 /** \defgroup console_commands Supported command types
diff --git a/Utils/Console/UDPServer.hh b/Utils/Console/UDPServer.hh
index 7ee589a9c..b5a91d087 100644
--- a/Utils/Console/UDPServer.hh
+++ b/Utils/Console/UDPServer.hh
@@ -40,7 +40,19 @@
 namespace senf {
 namespace console {
 
-    /** \brief
+    /** \brief UDP Console server
+
+        This class provides UDP access to the console to allow remote scripting. The UDP console
+        does support multicast operation.
+
+        Every UDP packet will be executed in a clean context: No directory groups are open/closed,
+        and the current directory is always the root directory. 
+
+        By default, the server will send command replies via UDP to the sender of the corresponding
+        incoming command. Replies may however either be completely disabled or be sent to a fixed
+        address (which may be a multicast address).
+
+        \ingroup console_access
       */
     class UDPServer
         : public boost::noncopyable
@@ -60,14 +72,18 @@ namespace console {
         ///@{
 
         explicit UDPServer(senf::INet4SocketAddress const & address);
+                                        ///< Open UDP server on \a address
         explicit UDPServer(senf::INet6SocketAddress const & address);
+                                        ///< Open UDP server on \a address
         
         ///@}
         ///////////////////////////////////////////////////////////////////////////
 
-        UDPServer & replies(bool enable);
+        UDPServer & replies(bool enable); ///< Enable or disable reply packets
         UDPServer & replies(senf::INet4SocketAddress const & address);
+                                        ///< Send replies to \a address
         UDPServer & replies(senf::INet6SocketAddress const & address);
+                                        ///< Send replies to \a address
 
         DirectoryNode & root() const;   ///< Get root node
 
-- 
GitLab