switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Logger / SyslogUDPTarget.hh
index a11f84c..1d90ec3 100644 (file)
@@ -1,24 +1,29 @@
 // $Id$
 //
-// Copyright (C) 2008 
+// Copyright (C) 2008
 // 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
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at 
+// http://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief SyslogUDPTarget public header */
@@ -27,8 +32,9 @@
 #define HH_SENF_Utils_Logger_SyslogUDPTarget_ 1
 
 // Custom includes
-#include "SyslogTarget.hh"
+#include <syslog.h>
 #include "LogFormat.hh"
+#include "Target.hh"
 #include <senf/Socket/Protocols/INet/INetAddressing.hh>
 #include <senf/Socket/ClientSocketHandle.hh>
 #include <senf/Socket/FramingPolicy.hh>
 #include <senf/Socket/CommunicationPolicy.hh>
 
 //#include "SyslogUDPTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace senf {
 namespace log {
 
     /** \brief Log target writing UDP syslog packets
 
-        The SyslogUDPTarget will send all %log messages directly via UDP to a target host. This 
+        The SyslogUDPTarget will send all %log messages directly via UDP to a target host. This
         host should have a syslog daemon or relay running. The protocol is defined in <a
         href="http://tools.ietf.org/html/rfc3164">RFC-3164</a>.
 
-        This log target has some important benefits:
+        This %log target has some important benefits:
 
-        \li It will never block. It may however lose log messages.
+        \li It will never block. It may however lose %log messages.
         \li It does \e not add timestamp information locally.
 
         These are \e advantages since this makes SyslogUDPTarget a very reliable high-performance
@@ -57,7 +63,7 @@ namespace log {
 
         Valid facility values are from <tt>man 3 syslog</tt>:
 
-        \par "" 
+        \par ""
            <tt>LOG_AUTHPRIV</tt>, <tt>LOG_CRON</tt>, <tt>LOG_DAEMON</tt>, <tt>LOG_FTP</tt>,
            <tt>LOG_KERN</tt>, <tt>LOG_LOCAL0</tt>, <tt>LOG_LOCAL1</tt>, <tt>LOG_LOCAL2</tt>,
            <tt>LOG_LOCAL3</tt>, <tt>LOG_LOCAL4</tt>, <tt>LOG_LOCAL5</tt>, <tt>LOG_LOCAL6</tt>,
@@ -93,20 +99,20 @@ namespace log {
         : public Target, private detail::LogFormat
     {
     public:
-        ///////////////////////////////////////////////////////////////////////////
+        //-////////////////////////////////////////////////////////////////////////
         // Types
 
-        ///////////////////////////////////////////////////////////////////////////
+        //-////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
-        ///@{
+        //\{
 
-        explicit SyslogUDPTarget(senf::INet4Address const & target, int facility = LOG_USER);
-        explicit SyslogUDPTarget(senf::INet4SocketAddress const & target, int facility = LOG_USER);
-        explicit SyslogUDPTarget(senf::INet6Address const & target, int facility = LOG_USER);
-        explicit SyslogUDPTarget(senf::INet6SocketAddress const & target, int facility = LOG_USER);
+        explicit SyslogUDPTarget(INet4Address const & target, int facility = LOG_USER);
+        explicit SyslogUDPTarget(INet4SocketAddress const & target, int facility = LOG_USER);
+        explicit SyslogUDPTarget(INet6Address const & target, int facility = LOG_USER);
+        explicit SyslogUDPTarget(INet6SocketAddress const & target, int facility = LOG_USER);
 
-        ///@}
-        ///////////////////////////////////////////////////////////////////////////
+        //\}
+        //-////////////////////////////////////////////////////////////////////////
 
         using detail::LogFormat::showTime;
         using detail::LogFormat::showStream;
@@ -122,9 +128,9 @@ namespace log {
         void syslog(bool enabled=true); ///< Set syslog format
 
     private:
-        void init(); 
-        void v_write(time_type timestamp, std::string const & stream, 
-                     std::string const & area, unsigned level, 
+        void init();
+        void v_write(time_type timestamp, std::string const & stream,
+                     std::string const & area, unsigned level,
                      std::string const & message);
 
         void consoleFormat(std::ostream & os);
@@ -138,7 +144,7 @@ namespace log {
         bool syslogFormat_;
 
     public:
-        enum LogFacility { 
+        enum LogFacility {
             AUTHPRIV = LOG_AUTHPRIV,
             CRON = LOG_CRON,
             DAEMON = LOG_DAEMON,
@@ -164,21 +170,21 @@ namespace log {
 
         struct RegisterConsole {
             RegisterConsole();
-            static boost::shared_ptr<senf::console::DirectoryNode> create(
-                senf::INet4SocketAddress const & target, LogFacility facility = USER);
-            static boost::shared_ptr<senf::console::DirectoryNode> create(
-                senf::INet4Address const & target, LogFacility facility = USER);
-            static boost::shared_ptr<senf::console::DirectoryNode> create(
-                senf::INet6SocketAddress const & target, LogFacility facility = USER);
-            static boost::shared_ptr<senf::console::DirectoryNode> create(
-                senf::INet6Address const & target, LogFacility facility = USER);
+            static boost::shared_ptr<console::DirectoryNode> create(
+                INet4SocketAddress const & target, LogFacility facility = USER);
+            static boost::shared_ptr<console::DirectoryNode> create(
+                INet4Address const & target, LogFacility facility = USER);
+            static boost::shared_ptr<console::DirectoryNode> create(
+                INet6SocketAddress const & target, LogFacility facility = USER);
+            static boost::shared_ptr<console::DirectoryNode> create(
+                INet6Address const & target, LogFacility facility = USER);
             static RegisterConsole instance;
         };
     };
 
 }}
 
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #include "SyslogUDPTarget.cci"
 //#include "SyslogUDPTarget.ct"
 //#include "SyslogUDPTarget.cti"