Packets: Add StringParser ostream operation
[senf.git] / Scheduler / FdEvent.ih
index 15d106c..940a057 100644 (file)
@@ -23,8 +23,8 @@
 /** \file
     \brief FdDispatcher internal header */
 
-#ifndef IH_FdDispatcher_
-#define IH_FdDispatcher_ 1
+#ifndef IH_SENF_Scheduler_FdEvent_
+#define IH_SENF_Scheduler_FdEvent_ 1
 
 // Custom includes
 #include "../boost/intrusive/iset.hpp"
 ///////////////////////////////ih.p////////////////////////////////////////
 
 namespace senf {
+namespace scheduler {
 
-    class Scheduler;
+    void restart();
 
-namespace scheduler {
 namespace detail {
 
     struct FdSetCompare {
-       bool operator()(FdEvent const & a, FdEvent const & b) const
-       { return a.fd_ < b.fd_; }
+        bool operator()(FdEvent const & a, FdEvent const & b) const
+        { return a.fd_ < b.fd_; }
     };
 
     struct FindFd {
-       bool operator()(FdEvent const & a, int b) const
-       { return a.fd_ < b; }
-       bool operator()(int a, FdEvent const & b) const
-       { return a < b.fd_; }
+        bool operator()(FdEvent const & a, int b) const
+        { return a.fd_ < b; }
+        bool operator()(int a, FdEvent const & b) const
+        { return a < b.fd_; }
     };
     
     class FdDispatcher
-       : public senf::singleton<FdDispatcher>
+        : public senf::singleton<FdDispatcher>
     {
     public:
-       using senf::singleton<FdDispatcher>::instance;
-       using senf::singleton<FdDispatcher>::alive;
-       
+        using senf::singleton<FdDispatcher>::instance;
+        using senf::singleton<FdDispatcher>::alive;
+        
         bool add(FdEvent & event);
         void remove(FdEvent & event);
 
@@ -68,23 +68,23 @@ namespace detail {
         FdDispatcher();
         ~FdDispatcher();
 
-       typedef boost::intrusive::imultiset< FdSetBase::value_traits<FdEvent>,
-                                            FdSetCompare,
-                                            false > FdSet;
+        typedef boost::intrusive::imultiset< FdSetBase::value_traits<FdEvent>,
+                                             FdSetCompare,
+                                             false > FdSet;
 
         FdSet fds_;
 
-        friend class senf::Scheduler;
+        friend void senf::scheduler::restart();
         friend class singleton<FdDispatcher>;
         friend class senf::scheduler::FdEvent;
     };
 
     class FileDispatcher
-       : public senf::singleton<FileDispatcher>
+        : public senf::singleton<FileDispatcher>
     {
     public:
-       using senf::singleton<FileDispatcher>::instance;
-       using senf::singleton<FileDispatcher>::alive;
+        using senf::singleton<FileDispatcher>::instance;
+        using senf::singleton<FileDispatcher>::alive;
 
         void add(FdEvent & event);
         void remove(FdEvent & event);
@@ -104,17 +104,22 @@ namespace detail {
 
         // We really only need a list here but we need to use the same event structure used by
         // the FdEvent.
-       typedef boost::intrusive::imultiset< FdSetBase::value_traits<FdEvent>,
-                                            FdSetCompare,
-                                            false > FdSet;
+        typedef boost::intrusive::imultiset< FdSetBase::value_traits<FdEvent>,
+                                             FdSetCompare,
+                                             false > FdSet;
 
         FdSet fds_;
         int managerTimeout_;
 
-        friend class senf::Scheduler;
+        friend void senf::scheduler::restart();
         friend class singleton<FileDispatcher>;
     };
 
+    template <class Handle>
+    int get_descriptor(Handle const & handle);
+
+    int retrieve_filehandle(int fd);
+
 }}}
 
 ///////////////////////////////ih.e////////////////////////////////////////