Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FIX::TimeRange Class Reference

Keeps track of when session is active. More...

#include <TimeRange.h>

Collaboration diagram for FIX::TimeRange:
Collaboration graph
[legend]

Public Member Functions

 TimeRange (const UtcTimeOnly &startTime, const UtcTimeOnly &endTime, int startDay=-1, int endDay=-1)
 
 TimeRange (const LocalTimeOnly &startTime, const LocalTimeOnly &endTime, int startDay=-1, int endDay=-1)
 
bool isInRange (const DateTime &dateTime, int day)
 
bool isInRange (const UtcTimeStamp &dateTime)
 
bool isInRange (const LocalTimeStamp &dateTime)
 
bool isInSameRange (const UtcTimeStamp &time1, const UtcTimeStamp &time2)
 
bool isInSameRange (const LocalTimeStamp &time1, const LocalTimeStamp &time2)
 

Static Public Member Functions

static bool isInRange (const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time)
 
static bool isInRange (const UtcTimeOnly &startTime, const UtcTimeOnly &endTime, int startDay, int endDay, const DateTime &time, int day)
 
static bool isInRange (const UtcTimeOnly &startTime, const UtcTimeOnly &endTime, int startDay, int endDay, const DateTime &time)
 
static bool isInSameRange (const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time1, const DateTime &time2)
 
static bool isInSameRange (const UtcTimeOnly &startTime, const UtcTimeOnly &endTime, int startDay, int endDay, const DateTime &time1, const DateTime &time2)
 
static bool isInRange (const LocalTimeOnly &start, const LocalTimeOnly &end, const DateTime &time)
 
static bool isInRange (const LocalTimeOnly &startTime, const LocalTimeOnly &endTime, int startDay, int endDay, const DateTime &time, int day)
 
static bool isInRange (const LocalTimeOnly &startTime, const LocalTimeOnly &endTime, int startDay, int endDay, const DateTime &time)
 
static bool isInSameRange (const LocalTimeOnly &start, const LocalTimeOnly &end, const DateTime &time1, const DateTime &time2)
 
static bool isInSameRange (const LocalTimeOnly &startTime, const LocalTimeOnly &endTime, int startDay, int endDay, const DateTime &time1, const DateTime &time2)
 

Private Member Functions

bool isInSameRange (const DateTime &time1, const DateTime &time2)
 

Static Private Member Functions

static bool isInRange (const DateTime &start, const DateTime &end, const DateTime &time)
 
static bool isInRange (const DateTime &startTime, const DateTime &endTime, int startDay, int endDay, const DateTime &time, int day)
 
static bool isInRange (const DateTime &startTime, const DateTime &endTime, int startDay, int endDay, const DateTime &time)
 
static bool isInSameRange (const DateTime &start, const DateTime &end, const DateTime &time1, const DateTime &time2)
 
static bool isInSameRange (const DateTime &startTime, const DateTime &endTime, int startDay, int endDay, const DateTime &time1, const DateTime &time2)
 

Private Attributes

UtcTimeOnly m_startTime
 
UtcTimeOnly m_endTime
 
int m_startDay
 
int m_endDay
 
bool m_useLocalTime
 

Detailed Description

Keeps track of when session is active.

Definition at line 51 of file TimeRange.h.

Constructor & Destructor Documentation

◆ TimeRange() [1/2]

FIX::TimeRange::TimeRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay = -1,
int  endDay = -1 
)

Definition at line 48 of file TimeRange.cpp.

50  : m_startTime( startTime ), m_endTime( endTime ),
51  m_startDay( startDay ), m_endDay( endDay ),
52  m_useLocalTime( true )
53  {
54  if( startDay > 0
55  && endDay > 0
56  && startDay == endDay
57  && endTime > startTime )
58  { m_endTime = m_startTime; }
59  }
60 
61  bool TimeRange::isInRange( const DateTime& start,

References m_endTime, and m_startTime.

◆ TimeRange() [2/2]

FIX::TimeRange::TimeRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay = -1,
int  endDay = -1 
)

Definition at line 63 of file TimeRange.cpp.

64  {
65  UtcTimeOnly timeOnly (time);
66 
67  if( start < end )
68  return( timeOnly >= start && timeOnly <= end );
69  else
70  return( timeOnly >= start || timeOnly <= end );
71  }
72 
73  bool TimeRange::isInRange( const DateTime& startTime,
74  const DateTime& endTime,
75  int startDay,
76  int endDay,

Member Function Documentation

◆ isInRange() [1/12]

bool FIX::TimeRange::isInRange ( const DateTime dateTime,
int  day 
)
inline

Definition at line 219 of file TimeRange.h.

219  {
220  LocalTimeStamp localTime1( time1.getTimeT() );
221  LocalTimeStamp localTime2( time2.getTimeT() );
222  return isInSameRange( (DateTime)localTime1, (DateTime)localTime2 );
223  }
224 
225  return isInSameRange( (DateTime)time1, (DateTime)time2 );
226  }

References isInSameRange().

◆ isInRange() [2/12]

bool FIX::TimeRange::isInRange ( const DateTime start,
const DateTime end,
const DateTime time 
)
staticprivate

Definition at line 78 of file TimeRange.cpp.

79  {
80  UtcTimeOnly timeOnly (time);
81 
82  if( startDay == endDay )
83  {
84  if( day != startDay )
85  return true;
86  return isInRange( startTime, endTime, time );
87  }
88  else if( startDay < endDay )

References isInRange().

◆ isInRange() [3/12]

bool FIX::TimeRange::isInRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time 
)
staticprivate

Definition at line 126 of file TimeRange.cpp.

129  {
130  UtcDate time1Date( time1 );
131  UtcDate time2Date( time2 );
132 
133  return time1Date == time2Date;

◆ isInRange() [4/12]

bool FIX::TimeRange::isInRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
)
staticprivate

Definition at line 90 of file TimeRange.cpp.

98  {
99  if( day < startDay && day > endDay )
100  return false;
101  else if( day == startDay && timeOnly < startTime )
102  return false;
103  else if( day == endDay && timeOnly > endTime )
104  return false;
105  }
106  return true;
107  }
108 
109  bool TimeRange::isInRange( const DateTime& startTime,
110  const DateTime& endTime,
111  int startDay,
112  int endDay,
113  const DateTime& time )
114  {
115  return isInRange( startTime, endTime, startDay, endDay, time, time.getWeekDay() );
116  }
117 
118  bool TimeRange::isInSameRange( const DateTime& start,
119  const DateTime& end,
120  const DateTime& time1,
121  const DateTime& time2 )
122  {
123  if( !isInRange( start, end, time1 ) ) return false;
124  if( !isInRange( start, end, time2 ) ) return false;

◆ isInRange() [5/12]

static bool FIX::TimeRange::isInRange ( const LocalTimeOnly start,
const LocalTimeOnly end,
const DateTime time 
)
inlinestatic

Definition at line 133 of file TimeRange.h.

136  {
137  return isInSameRange
138  ( (DateTime)start, (DateTime)end,
139  (DateTime)time1, (DateTime)time2 );

References isInSameRange().

◆ isInRange() [6/12]

static bool FIX::TimeRange::isInRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time 
)
inlinestatic

Definition at line 154 of file TimeRange.h.

155  :
156  static bool isInRange( const DateTime& start,
157  const DateTime& end,
158  const DateTime& time );
159 
160  static bool isInRange( const DateTime& startTime,
161  const DateTime& endTime,
162  int startDay,
163  int endDay,
164  const DateTime& time,

◆ isInRange() [7/12]

static bool FIX::TimeRange::isInRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
)
inlinestatic

Definition at line 141 of file TimeRange.h.

148  {
149  return isInSameRange
150  ( (DateTime)startTime, (DateTime)endTime,
151  startDay, endDay,
152  (DateTime)time1, (DateTime)time2 );

References isInSameRange().

◆ isInRange() [8/12]

bool FIX::TimeRange::isInRange ( const LocalTimeStamp dateTime)
inline

Definition at line 239 of file TimeRange.h.

240  :
241  bool isInSameRange( const DateTime& time1, const DateTime& time2 )
242  {
243  if( m_startDay < 0 && m_endDay < 0 )
244  return isInSameRange( m_startTime, m_endTime, time1, time2 );
245  else
246  return isInSameRange
247  ( m_startTime, m_endTime, m_startDay, m_endDay, time1, time2 );
248  }

References isInSameRange(), m_endDay, m_endTime, m_startDay, and m_startTime.

◆ isInRange() [9/12]

static bool FIX::TimeRange::isInRange ( const UtcTimeOnly start,
const UtcTimeOnly end,
const DateTime time 
)
inlinestatic

Definition at line 77 of file TimeRange.h.

80  {
81  return isInSameRange
82  ( (DateTime)start, (DateTime)end,
83  (DateTime)time1, (DateTime)time2 );

References isInSameRange().

Referenced by FIX::Session::getSessionID(), isInRange(), isInSameRange(), and FIX::Session::setDataDictionaryProvider().

◆ isInRange() [10/12]

static bool FIX::TimeRange::isInRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time 
)
inlinestatic

Definition at line 98 of file TimeRange.h.

102  {
103  return isInRange
104  ( (DateTime)start, (DateTime)end, (DateTime)time );
105  }
106 
107  static bool isInRange( const LocalTimeOnly& startTime,
108  const LocalTimeOnly& endTime,

References isInRange().

◆ isInRange() [11/12]

static bool FIX::TimeRange::isInRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
)
inlinestatic

Definition at line 85 of file TimeRange.h.

92  {
93  return isInSameRange
94  ( (DateTime)startTime, (DateTime)endTime,
95  startDay, endDay,
96  (DateTime)time1, (DateTime)time2 );

References isInSameRange().

◆ isInRange() [12/12]

bool FIX::TimeRange::isInRange ( const UtcTimeStamp dateTime)
inline

Definition at line 228 of file TimeRange.h.

229  {
230  if( !m_useLocalTime )
231  {
232  UtcTimeStamp utcTime1( time1.getTimeT() );
233  UtcTimeStamp utcTime2( time2.getTimeT() );
234  return isInSameRange( (DateTime)utcTime1, (DateTime)utcTime2 );
235  }
236 
237  return isInSameRange( (DateTime)time1, (DateTime)time2 );

References FIX::DateTime::getTimeT(), isInSameRange(), and m_useLocalTime.

◆ isInSameRange() [1/9]

bool FIX::TimeRange::isInSameRange ( const DateTime start,
const DateTime end,
const DateTime time1,
const DateTime time2 
)
staticprivate

Definition at line 135 of file TimeRange.cpp.

136  {
137  int sessionLength = DateTime::SECONDS_PER_DAY - (start - end);
138 
139  if( time1 > time2 )
140  {
141  UtcTimeOnly time2TimeOnly = UtcTimeOnly(time2);
142 
143  long delta = time2TimeOnly - start;
144  if( delta < 0 )
145  delta = DateTime::SECONDS_PER_DAY - labs(delta);
146 
147  return (time1 - time2) < (sessionLength - delta);
148  }
149  else
150  {
151  return (time2 - time1) < sessionLength;
152  }
153  }
154  }
155 
156  bool TimeRange::isInSameRange( const DateTime& startTime,
157  const DateTime& endTime,
158  int startDay,
159  int endDay,
160  const DateTime& time1,
161  const DateTime& time2 )
162  {
163  if( !isInRange( startTime, endTime, startDay, endDay, time1, time1.getWeekDay() ) )
164  return false;
165 
166  if( !isInRange( startTime, endTime, startDay, endDay, time2, time2.getWeekDay() ) )
167  return false;
168 
169  int absoluteDay1 = time1.getJulianDate() - time1.getWeekDay();
170  int absoluteDay2 = time2.getJulianDate() - time2.getWeekDay();
171  return absoluteDay1 == absoluteDay2;

References FIX::DateTime::SECONDS_PER_DAY, and FIX::TYPE::UtcTimeOnly.

◆ isInSameRange() [2/9]

bool FIX::TimeRange::isInSameRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
)
staticprivate

Definition at line 173 of file TimeRange.cpp.

◆ isInSameRange() [3/9]

bool FIX::TimeRange::isInSameRange ( const DateTime time1,
const DateTime time2 
)
inlineprivate

Definition at line 275 of file TimeRange.h.

◆ isInSameRange() [4/9]

static bool FIX::TimeRange::isInSameRange ( const LocalTimeOnly start,
const LocalTimeOnly end,
const DateTime time1,
const DateTime time2 
)
inlinestatic

Definition at line 166 of file TimeRange.h.

184  :

◆ isInSameRange() [5/9]

static bool FIX::TimeRange::isInSameRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
)
inlinestatic

Definition at line 176 of file TimeRange.h.

184  :
185  bool isInRange( const DateTime& dateTime, int day )
186  {
187  if( m_startDay < 0 && m_endDay < 0 )

◆ isInSameRange() [6/9]

bool FIX::TimeRange::isInSameRange ( const LocalTimeStamp time1,
const LocalTimeStamp time2 
)
inline

Definition at line 262 of file TimeRange.h.

◆ isInSameRange() [7/9]

static bool FIX::TimeRange::isInSameRange ( const UtcTimeOnly start,
const UtcTimeOnly end,
const DateTime time1,
const DateTime time2 
)
inlinestatic

Definition at line 110 of file TimeRange.h.

113  {
114  return isInRange
115  ( (DateTime)startTime, (DateTime)endTime,
116  startDay, endDay,
117  (DateTime)time, day );
118  }

References isInRange().

Referenced by isInRange().

◆ isInSameRange() [8/9]

static bool FIX::TimeRange::isInSameRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
)
inlinestatic

Definition at line 120 of file TimeRange.h.

125  {
126  return isInRange
127  ( (DateTime)startTime, (DateTime)endTime,
128  startDay, endDay,
129  (DateTime)time );
130  }
131 

References isInRange().

◆ isInSameRange() [9/9]

bool FIX::TimeRange::isInSameRange ( const UtcTimeStamp time1,
const UtcTimeStamp time2 
)
inline

Definition at line 250 of file TimeRange.h.

Member Data Documentation

◆ m_endDay

int FIX::TimeRange::m_endDay
private

Definition at line 287 of file TimeRange.h.

Referenced by isInRange().

◆ m_endTime

UtcTimeOnly FIX::TimeRange::m_endTime
private

Definition at line 285 of file TimeRange.h.

Referenced by isInRange(), and TimeRange().

◆ m_startDay

int FIX::TimeRange::m_startDay
private

Definition at line 286 of file TimeRange.h.

Referenced by isInRange().

◆ m_startTime

UtcTimeOnly FIX::TimeRange::m_startTime
private

Definition at line 284 of file TimeRange.h.

Referenced by isInRange(), and TimeRange().

◆ m_useLocalTime

bool FIX::TimeRange::m_useLocalTime
private

Definition at line 288 of file TimeRange.h.

Referenced by isInRange().


The documentation for this class was generated from the following files:
FIX::TimeRange::m_startTime
UtcTimeOnly m_startTime
Definition: TimeRange.h:284
FIX::TimeRange::m_startDay
int m_startDay
Definition: TimeRange.h:286
FIX::TYPE::UtcDate
@ UtcDate
Definition: FieldTypes.h:948
FIX::TYPE::UtcTimeStamp
@ UtcTimeStamp
Definition: FieldTypes.h:940
FIX::TimeRange::m_endDay
int m_endDay
Definition: TimeRange.h:287
FIX::TYPE::UtcTimeOnly
@ UtcTimeOnly
Definition: FieldTypes.h:950
FIX::TimeRange::m_endTime
UtcTimeOnly m_endTime
Definition: TimeRange.h:285
FIX::TimeRange::isInSameRange
static bool isInSameRange(const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time1, const DateTime &time2)
Definition: TimeRange.h:110
FIX::TimeRange::m_useLocalTime
bool m_useLocalTime
Definition: TimeRange.h:288
FIX::TimeRange::isInRange
static bool isInRange(const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time)
Definition: TimeRange.h:77
FIX::DateTime::SECONDS_PER_DAY
static const int64_t SECONDS_PER_DAY
Magic numbers.
Definition: FieldTypes.h:83

Generated on Wed Apr 29 2020 19:41:30 for QuickFIX by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2001