]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Timer.hh
tcp socket disconnecting by remote
[chaz/yoink] / src / Moof / Timer.hh
index 6c1af5615a6426913eac86788a46b9e02116bbd4..4cc848048c5655d38aabe2e89b47d9a9bc9669e4 100644 (file)
@@ -1,30 +1,13 @@
 
-/*******************************************************************************
-
- Copyright (c) 2009, Charles McGarvey
- All rights reserved.
- Redistribution   and   use  in  source  and  binary  forms,  with  or  without
- modification, are permitted provided that the following conditions are met:
-   * Redistributions  of  source  code  must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-   * Redistributions  in binary form must reproduce the above copyright notice,
-     this  list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
- THIS  SOFTWARE  IS  PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND  ANY  EXPRESS  OR  IMPLIED  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED.  IN  NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR  ANY  DIRECT,  INDIRECT,  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES  (INCLUDING,  BUT  NOT  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES;  LOSS  OF  USE,  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*******************************************************************************/
+/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
+**]  All rights reserved.
+*
+* vi:ts=4 sw=4 tw=75
+*
+* Distributable under the terms and conditions of the 2-clause BSD license;
+* see the file COPYING for a complete text of the license.
+*
+**************************************************************************/
 
 #ifndef _MOOF_TIMER_HH_
 #define _MOOF_TIMER_HH_
 namespace Mf {
 
 
-struct Timer
+class Timer
 {
+public:
+
        enum Mode
        {
                INVALID         = -1,
                NORMAL          =  0,
-               ABSOLUTEE       =  1,   // the ABSOLUTE keyword isn't available on win32...
+               ACTUAL          =  1,
                REPEAT          =  2
        };
 
@@ -59,7 +44,7 @@ struct Timer
 
 
        Timer() :
-               mode_(INVALID) {}
+               mMode(INVALID) {}
 
        Timer(const Function& function, Scalar seconds, Mode mode = NORMAL)
        {
@@ -71,7 +56,8 @@ struct Timer
                invalidate();
        }
 
-       void init(const Function& function, Scalar seconds, Mode mode = NORMAL);
+       void init(const Function& function, Scalar seconds,
+                         Mode mode = NORMAL);
 
        bool isValid() const;
        void invalidate();
@@ -84,7 +70,8 @@ struct Timer
 
 
        /**
-        * Get the number of seconds since a fixed, arbitrary point in the past.
+        * Get the number of seconds since a fixed, arbitrary point in the
+        * past.
         * @return Seconds.
         */
 
@@ -92,22 +79,24 @@ struct Timer
 
 
        /**
-        * Put the thread to sleep for a certain period of time.  If absolute is true,
-        * then it will sleep until seconds after the fixed time in the past.  If
-        * absolute is false, it will sleep for seconds starting now.  Unlike system
-        * sleep functions, this one automatically resumes sleep if sleep was
-        * interrupted by a signal.  Therefore, calling this function is guaranteed to
-        * sleep for the requested amount of time (and maybe longer).
+        * Put the thread to sleep for a certain period of time.  If absolute
+        * is true, then it will sleep until seconds after the fixed time in
+        * the past.  If absolute is false, it will sleep for seconds starting
+        * now.  Unlike system sleep functions, this one automatically resumes
+        * sleep if sleep was interrupted by a signal.  Therefore, calling this
+        * function is guaranteed to sleep for the requested amount of time
+        * (and maybe longer).
         */
 
-       static void sleep(Scalar seconds, bool absolute = false);
+       static void sleep(Scalar seconds, Mode mode = NORMAL);
 
 
        static Scalar getNextFire()
        {
-               return nextFire_;
+               return gNextFire;
        }
 
+       static void fireIfExpired();
        static void fireIfExpired(Scalar t);
 
 private:
@@ -115,21 +104,18 @@ private:
        static unsigned getNewID();
        static Scalar findNextFire();
 
-       Function        function_;
-       Mode            mode_;
-       Scalar          absolute_;
-       Scalar          interval_;
-       unsigned        id_;
+       Function        mFunction;
+       Mode            mMode;
+       Scalar          mAbsolute;
+       Scalar          mInterval;
+       unsigned        mId;
 
-       static Scalar                                           nextFire_;
-       static std::map<unsigned,Timer&>        timers_;
+       static Scalar                                           gNextFire;
+       static std::map<unsigned,Timer*>        gTimers;
 };
 
 
 } // namespace Mf
 
-
 #endif // _MOOF_TIMER_HH_
 
-/** vim: set ts=4 sw=4 tw=80: *************************************************/
-
This page took 0.022865 seconds and 4 git commands to generate.