g++/final: don't add extra code to check for buffer overflows (-fno-stack-protector)
[senf.git] / senf / Scheduler / FdEvent.hh
index fed1446..8d3209d 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 FdDispatcher public header */
 #define HH_SENF_Scheduler_FdEvent_ 1
 
 // Custom includes
-#include <boost/intrusive/iset_hook.hpp>
+#include <senf/boost_intrusive/iset_hook.hpp>
 #include <senf/Utils/Exception.hh>
 #include "FdManager.hh"
 #include "FIFORunner.hh"
 
 //#include "FdEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace senf {
 namespace scheduler {
@@ -42,7 +47,6 @@ namespace scheduler {
         struct FdSetTag;
         typedef boost::intrusive::iset_base_hook<FdSetTag> FdSetBase;
         struct FdSetCompare;
-        struct FindFd;
         class FdDispatcher;
         class FileDispatcher;
     }
@@ -61,13 +65,13 @@ namespace scheduler {
         The callback will be called with one additional argument. This argument is the event mask of
         type int. This mask will tell, which of the registered events are signaled. There are some
         additional flags which can be set when calling the handler callback:
-        
+
         \li \c EV_HUP: The other end has closed the connection
         \li \c EV_ERR: Transport error
 
         Only a single handler may be registered for any combination of file descriptor and event
         otherwise a DuplicateEventRegistrationException is thrown.
-        
+
         The file descriptor is specified using an arbitrary handle type which supports the \c
         retrieve_filehandle() protocol: There must be a global function \c retrieve_filehandle
         callable with the handle type. This function must return the file descriptor associated with
@@ -84,27 +88,27 @@ namespace scheduler {
           public detail::FdSetBase,
           public detail::FdManager::Event
     {
-    public: 
-        ///////////////////////////////////////////////////////////////////////////
+    public:
+        //-////////////////////////////////////////////////////////////////////////
         // Types
 
         typedef boost::function<void (int)> Callback;
 
-        enum Events { 
+        enum Events {
             EV_NONE = 0                             ///< No event
           , EV_READ = detail::FdManager::EV_READ    ///< fd readable (or EOF)
           , EV_PRIO = detail::FdManager::EV_PRIO    ///< OOB data available for read
           , EV_WRITE = detail::FdManager::EV_WRITE  ///< fd writable
           , EV_HUP = detail::FdManager::EV_HUP      ///< remote end closed connection
           , EV_ERR = detail::FdManager::EV_ERR      ///< transport error
-          , EV_ALL = (detail::FdManager::EV_READ 
-                      | detail::FdManager::EV_WRITE 
+          , EV_ALL = (detail::FdManager::EV_READ
+                      | detail::FdManager::EV_WRITE
                       | detail::FdManager::EV_PRIO) ///< register all events (read, prio and write)
         };
 
-        ///////////////////////////////////////////////////////////////////////////
+        //-////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
-        ///@{
+        //\{
 
         template <class Handle>
         FdEvent(std::string const & name, Callback const & cb, Handle const & handle, int events,
@@ -132,9 +136,9 @@ namespace scheduler {
                                                  explicitly be set to \c 0 if the value cannot be
                                                  initialized. */
         ~FdEvent();
-        
-        ///@}
-        ///////////////////////////////////////////////////////////////////////////
+
+        //\}
+        //-////////////////////////////////////////////////////////////////////////
 
         void disable();                 ///< Disable event
         void enable();                  ///< Enable event
@@ -145,7 +149,7 @@ namespace scheduler {
         FdEvent & addEvents(int events); ///< Add additional events to event mask
         FdEvent & removeEvents(int events); ///< Remove events from event mask
         int events();                   ///< Current event mask
-        
+
         template <class Handle>
         FdEvent & handle(Handle const & handle); ///< Change event file handle
 
@@ -167,7 +171,6 @@ namespace scheduler {
         int signaledEvents_;
 
         friend class detail::FdSetCompare;
-        friend class detail::FindFd;
         friend class detail::FdDispatcher;
         friend class detail::FileDispatcher;
     };
@@ -182,7 +185,7 @@ namespace scheduler {
     int get_descriptor(Handle const & handle);
 }}
 
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #include "FdEvent.cci"
 #include "FdEvent.ct"
 #include "FdEvent.cti"