blocxx
src
blocxx
TimeoutTimer.hpp
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright (C) 2005, Vintela, Inc. All rights reserved.
3
* Copyright (C) 2006, Novell, Inc. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of
14
* Vintela, Inc.,
15
* nor Novell, Inc.,
16
* nor the names of its contributors or employees may be used to
17
* endorse or promote products derived from this software without
18
* specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
* POSSIBILITY OF SUCH DAMAGE.
31
*******************************************************************************/
32
33
38
#ifndef BLOCXX_TIMEOUT_TIMER_HPP_INCLUDE_GUARD_
39
#define BLOCXX_TIMEOUT_TIMER_HPP_INCLUDE_GUARD_
40
41
#include "blocxx/BLOCXX_config.h"
42
#include "
blocxx/CommonFwd.hpp
"
43
#include "
blocxx/Timeout.hpp
"
44
#include "
blocxx/DateTime.hpp
"
45
46
#ifdef BLOCXX_HAVE_SYS_TIME_H
47
#include <sys/time.h>
// for timeval
48
#endif
49
#include <time.h>
// for timespec
50
51
namespace
BLOCXX_NAMESPACE
52
{
53
75
class
BLOCXX_COMMON_API
TimeoutTimer
76
{
77
public
:
78
TimeoutTimer
(
const
Timeout
& x);
79
virtual
~TimeoutTimer
();
80
87
void
start();
88
95
void
resetOnLoop();
96
102
void
loop();
103
107
bool
expired()
const
;
108
112
bool
infinite()
const
;
113
114
#ifdef BLOCXX_HAVE_STRUCT_TIMEVAL
115
// return 0 for infinite, otherwise a pointer to tv, and tv will be modified to contain an interval suitable for use with select().
116
::timeval* asTimeval(::timeval& tv,
double
maxSeconds)
const
;
117
// return 0 for infinite, otherwise a pointer to tv, and tv will be modified to contain an interval suitable for use with select().
118
::timeval* asTimeval(::timeval& tv)
const
;
119
#endif
120
121
#ifdef BLOCXX_HAVE_STRUCT_TIMESPEC
122
// fills out ts and returns the address of it.
123
::timespec* asTimespec(::timespec& ts)
const
;
124
#endif
125
126
Timeout
asTimeout()
const
;
127
Timeout
asRelativeTimeout()
const
;
128
Timeout
asRelativeTimeout(
double
maxSeconds)
const
;
133
Timeout
asAbsoluteTimeout()
const
;
134
135
#ifdef BLOCXX_WIN32
136
// returns INFINITE for an infinite timeout.
137
::DWORD asDWORDMs()
const
;
138
#endif
139
140
// returns -1 for infinite
141
int
asIntMs()
const
;
142
int
asIntMs(
double
maxSeconds)
const
;
143
144
private
:
145
146
double
calcSeconds()
const
;
147
double
calcSeconds(
double
maxSeconds)
const
;
148
149
// for test purposes, the current time can be faked by a derived class.
150
virtual
DateTime
getCurrentTime()
const
;
151
152
Timeout
m_timeout
;
153
DateTime
m_start
;
154
DateTime
m_loopTime
;
155
};
156
157
}
// end namespace BLOCXX_NAMESPACE
158
159
#endif
160
161
162
CommonFwd.hpp
DateTime.hpp
Timeout.hpp
BLOCXX_NAMESPACE::DateTime
The DateTime class is an abstraction for date time data.
Definition
DateTime.hpp:81
BLOCXX_NAMESPACE::Timeout
A timeout can be absolute, which means that it will happen at the specified DateTime.
Definition
Timeout.hpp:56
BLOCXX_NAMESPACE::TimeoutTimer
A TimeoutTimer is used by an algorithm to determine when a timeout has expired.
Definition
TimeoutTimer.hpp:76
BLOCXX_NAMESPACE::TimeoutTimer::m_loopTime
DateTime m_loopTime
Definition
TimeoutTimer.hpp:154
BLOCXX_NAMESPACE::TimeoutTimer::m_start
DateTime m_start
Definition
TimeoutTimer.hpp:153
BLOCXX_NAMESPACE::TimeoutTimer::m_timeout
Timeout m_timeout
Definition
TimeoutTimer.hpp:152
BLOCXX_NAMESPACE
Taken from RFC 1321.
Definition
AppenderLogger.cpp:48
Generated by
1.12.0