Scheduler: Add POSIX/UNIX signal support
[senf.git] / Scheduler / Scheduler.cci
index f752d3e..286d8ec 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2006 
+// Copyright (C) 2006
 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
 //     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
@@ -20,7 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Definition of inline non-template functions
+/** \file
+    \brief Scheduler inline non-template implementation
+ */
 
 //#include "Scheduler.ih"
 
 #define prefix_ inline
 ///////////////////////////////cci.p///////////////////////////////////////
 
+prefix_ senf::Scheduler::Scheduler & senf::Scheduler::instance()
+{
+    static Scheduler instance;
+    return instance;
+}
+
+prefix_ unsigned senf::Scheduler::timeout(ClockService::clock_type timeout,
+                                          SimpleCallback const & cb)
+{
+    ++ timerIdCounter_;
+    TimerMap::iterator i (
+        timerMap_.insert(std::make_pair(timerIdCounter_, 
+                                        TimerSpec(timeout,cb,timerIdCounter_))).first);
+    timerQueue_.push(i);
+    return timerIdCounter_;
+}
+
+prefix_ void senf::Scheduler::cancelTimeout(unsigned id)
+{
+    TimerMap::iterator i (timerMap_.find(id));
+    if (i != timerMap_.end())
+        i->second.canceled = true;
+}
+
 prefix_ void senf::Scheduler::terminate()
 {
     terminate_ = true;
 }
 
+prefix_ senf::ClockService::clock_type senf::Scheduler::eventTime()
+    const
+{
+    return eventTime_;
+}
+
 prefix_ int senf::retrieve_filehandle(int fd)
 {
     return fd;
 }
 
+prefix_ senf::Scheduler::TimerSpecCompare::result_type
+senf::Scheduler::TimerSpecCompare::operator()(first_argument_type a, second_argument_type b)
+{
+    return a->second < b->second;
+}
+
 ///////////////////////////////cci.e///////////////////////////////////////
 #undef prefix_
 
 \f
 // Local Variables:
 // mode: c++
+// fill-column: 100
 // c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
 // End: