Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
FIX::TimeRange Class Reference

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

#include <TimeRange.h>

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

List of all members.

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 34 of file TimeRange.h.


Constructor & Destructor Documentation

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

Definition at line 31 of file TimeRange.cpp.

References m_endTime, and m_startTime.

  : m_startTime( startTime ), m_endTime( endTime ),
    m_startDay( startDay ), m_endDay( endDay ),
    m_useLocalTime( false )
  {
    if( startDay > 0
        && endDay > 0
        && startDay == endDay
        && endTime > startTime )
    { m_endTime = m_startTime; }
  }
FIX::TimeRange::TimeRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay = -1,
int  endDay = -1 
)

Definition at line 46 of file TimeRange.cpp.

References m_endTime, and m_startTime.

  : m_startTime( startTime ), m_endTime( endTime ),
    m_startDay( startDay ), m_endDay( endDay ),
    m_useLocalTime( true )
  {
    if( startDay > 0
        && endDay > 0
        && startDay == endDay
        && endTime > startTime )
    { m_endTime = m_startTime; }
  }

Member Function Documentation

static bool FIX::TimeRange::isInRange ( const UtcTimeOnly start,
const UtcTimeOnly end,
const DateTime time 
) [inline, static]

Definition at line 43 of file TimeRange.h.

Referenced by FIX::SessionFactory::create(), isInRange(), isInSameRange(), FIX::Session::isLogonTime(), and FIX::Session::isSessionTime().

  {
    return isInRange
      ( (DateTime)start, (DateTime)end, (DateTime)time );
  }
static bool FIX::TimeRange::isInRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
) [inline, static]

Definition at line 51 of file TimeRange.h.

References isInRange().

  {
    return isInRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time, day );
  }
static bool FIX::TimeRange::isInRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time 
) [inline, static]

Definition at line 64 of file TimeRange.h.

References isInRange().

  {
    return isInRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time );
  }
static bool FIX::TimeRange::isInRange ( const LocalTimeOnly start,
const LocalTimeOnly end,
const DateTime time 
) [inline, static]

Definition at line 99 of file TimeRange.h.

References isInRange().

  {
    return isInRange
      ( (DateTime)start, (DateTime)end, (DateTime)time );
  }
static bool FIX::TimeRange::isInRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
) [inline, static]

Definition at line 107 of file TimeRange.h.

References isInRange().

  {
    return isInRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time, day );
  }
static bool FIX::TimeRange::isInRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time 
) [inline, static]

Definition at line 120 of file TimeRange.h.

References isInRange().

  {
    return isInRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time );
  }
bool FIX::TimeRange::isInRange ( const DateTime start,
const DateTime end,
const DateTime time 
) [static, private]

Definition at line 61 of file TimeRange.cpp.

  {
    UtcTimeOnly timeOnly (time);

    if( start < end )
      return( timeOnly >= start && timeOnly <= end );
    else
      return( timeOnly >= start || timeOnly <= end );
  }
bool FIX::TimeRange::isInRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time,
int  day 
) [static, private]

Definition at line 73 of file TimeRange.cpp.

References isInRange().

  {
    UtcTimeOnly timeOnly (time);

    if( startDay == endDay )
    {
      if( day != startDay )
        return true;
      return isInRange( startTime, endTime, time );
    }
    else if( startDay < endDay )
    {
      if( day < startDay || day > endDay )
        return false;
      else if( day == startDay && timeOnly < startTime )
        return false;
      else if( day == endDay && timeOnly > endTime )
        return false;
    }
    else if( startDay > endDay )
    {
      if( day < startDay && day > endDay )
        return false;
      else if( day == startDay && timeOnly < startTime )
        return false;
      else if( day == endDay && timeOnly > endTime )
        return false;
    }
    return true;
  }
bool FIX::TimeRange::isInRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time 
) [static, private]

Definition at line 109 of file TimeRange.cpp.

References FIX::DateTime::getWeekDay(), and isInRange().

  {
    return isInRange( startTime, endTime, startDay, endDay, time, time.getWeekDay() );
  }
bool FIX::TimeRange::isInRange ( const DateTime dateTime,
int  day 
) [inline]

Definition at line 185 of file TimeRange.h.

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

  {
    if( m_startDay < 0 && m_endDay < 0 )
      return isInRange( m_startTime, m_endTime, dateTime );
    else
      return isInRange
        ( m_startTime, m_endTime, m_startDay, m_endDay, dateTime, day );
  }
bool FIX::TimeRange::isInRange ( const UtcTimeStamp dateTime) [inline]

Definition at line 194 of file TimeRange.h.

References FIX::DateTime::getTimeT(), FIX::DateTime::getWeekDay(), isInRange(), and m_useLocalTime.

  {
    if( m_useLocalTime )
    {
      LocalTimeStamp localDateTime( dateTime.getTimeT() );
      return isInRange( localDateTime, localDateTime.getWeekDay() );
    }

    return isInRange( dateTime, dateTime.getWeekDay() );
  }
bool FIX::TimeRange::isInRange ( const LocalTimeStamp dateTime) [inline]

Definition at line 205 of file TimeRange.h.

References FIX::DateTime::getTimeT(), FIX::DateTime::getWeekDay(), isInRange(), and m_useLocalTime.

  {
    if( !m_useLocalTime )
    {
      LocalTimeStamp utcDateTime( dateTime.getTimeT() );
      return isInRange( utcDateTime, utcDateTime.getWeekDay() );
    }

    return isInRange( dateTime, dateTime.getWeekDay() );
  }
static bool FIX::TimeRange::isInSameRange ( const UtcTimeOnly start,
const UtcTimeOnly end,
const DateTime time1,
const DateTime time2 
) [inline, static]

Definition at line 76 of file TimeRange.h.

Referenced by FIX::Session::checkSessionTime(), and isInSameRange().

  {
    return isInSameRange
      ( (DateTime)start, (DateTime)end, 
        (DateTime)time1, (DateTime)time2 );
  }
static bool FIX::TimeRange::isInSameRange ( const UtcTimeOnly startTime,
const UtcTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
) [inline, static]

Definition at line 86 of file TimeRange.h.

References isInSameRange().

  {
    return isInSameRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time1, (DateTime)time2 );
  }
static bool FIX::TimeRange::isInSameRange ( const LocalTimeOnly start,
const LocalTimeOnly end,
const DateTime time1,
const DateTime time2 
) [inline, static]

Definition at line 132 of file TimeRange.h.

References isInSameRange().

  {
    return isInSameRange
      ( (DateTime)start, (DateTime)end, 
        (DateTime)time1, (DateTime)time2 );
  }
static bool FIX::TimeRange::isInSameRange ( const LocalTimeOnly startTime,
const LocalTimeOnly endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
) [inline, static]

Definition at line 142 of file TimeRange.h.

References isInSameRange().

  {
    return isInSameRange
      ( (DateTime)startTime, (DateTime)endTime, 
        startDay, endDay, 
        (DateTime)time1, (DateTime)time2 );
  }
bool FIX::TimeRange::isInSameRange ( const DateTime start,
const DateTime end,
const DateTime time1,
const DateTime time2 
) [static, private]

Definition at line 118 of file TimeRange.cpp.

References isInRange(), FIX::DateTime::SECONDS_PER_DAY, and FIX::TYPE::UtcTimeOnly.

  {
    if( !isInRange( start, end, time1 ) ) return false;
    if( !isInRange( start, end, time2 ) ) return false;

    if( time1 == time2 ) return true;

    if( start < end || start == end )
    {
      UtcDate time1Date( time1 );
      UtcDate time2Date( time2 );
 
      return time1Date == time2Date;
    }
    else
    {
      int sessionLength = DateTime::SECONDS_PER_DAY - (start - end);

      if( time1 > time2 )
      {
        UtcTimeOnly time2TimeOnly = UtcTimeOnly(time2);

        long delta = time2TimeOnly - start;
        if( delta < 0 )
          delta = DateTime::SECONDS_PER_DAY - labs(delta);

        return (time1 - time2) < (sessionLength - delta);
      }
      else
      {
        return (time2 - time1) < sessionLength;
      }
    }
  }
bool FIX::TimeRange::isInSameRange ( const DateTime startTime,
const DateTime endTime,
int  startDay,
int  endDay,
const DateTime time1,
const DateTime time2 
) [static, private]

Definition at line 156 of file TimeRange.cpp.

References FIX::DateTime::getJulianDate(), FIX::DateTime::getWeekDay(), and isInRange().

  {
    if( !isInRange( startTime, endTime, startDay, endDay, time1, time1.getWeekDay() ) )
      return false;

    if( !isInRange( startTime, endTime, startDay, endDay, time2, time2.getWeekDay() ) )
      return false;

    int absoluteDay1 = time1.getJulianDate() - time1.getWeekDay();
    int absoluteDay2 = time2.getJulianDate() - time2.getWeekDay();
    return absoluteDay1 == absoluteDay2;
  }
bool FIX::TimeRange::isInSameRange ( const UtcTimeStamp time1,
const UtcTimeStamp time2 
) [inline]

Definition at line 216 of file TimeRange.h.

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

  {
    if( m_useLocalTime )
    {
      LocalTimeStamp localTime1( time1.getTimeT() );
      LocalTimeStamp localTime2( time2.getTimeT() );
      return isInSameRange( (DateTime)localTime1, (DateTime)localTime2 );
    }

    return isInSameRange( (DateTime)time1, (DateTime)time2 );
  }
bool FIX::TimeRange::isInSameRange ( const LocalTimeStamp time1,
const LocalTimeStamp time2 
) [inline]

Definition at line 228 of file TimeRange.h.

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

  {
    if( !m_useLocalTime )
    {
      UtcTimeStamp utcTime1( time1.getTimeT() );
      UtcTimeStamp utcTime2( time2.getTimeT() );
      return isInSameRange( (DateTime)utcTime1, (DateTime)utcTime2 );
    }

    return isInSameRange( (DateTime)time1, (DateTime)time2 );
  }
bool FIX::TimeRange::isInSameRange ( const DateTime time1,
const DateTime time2 
) [inline, private]

Definition at line 241 of file TimeRange.h.

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

  {
    if( m_startDay < 0 && m_endDay < 0 )
      return isInSameRange( m_startTime, m_endTime, time1, time2 );
    else
      return isInSameRange
        ( m_startTime, m_endTime, m_startDay, m_endDay, time1, time2 );
  }

Member Data Documentation

int FIX::TimeRange::m_endDay [private]

Definition at line 253 of file TimeRange.h.

Referenced by isInRange(), and isInSameRange().

Definition at line 251 of file TimeRange.h.

Referenced by isInRange(), isInSameRange(), and TimeRange().

Definition at line 252 of file TimeRange.h.

Referenced by isInRange(), and isInSameRange().

Definition at line 250 of file TimeRange.h.

Referenced by isInRange(), isInSameRange(), and TimeRange().

Definition at line 254 of file TimeRange.h.

Referenced by isInRange(), and isInSameRange().


The documentation for this class was generated from the following files:

Generated on Mon Sep 15 2014 01:23:57 for QuickFIX by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001