cdev-1.7.2n
This commit is contained in:
210
extensions/cdevGenericServer/cdevReactor/cdevTime.cc
Normal file
210
extensions/cdevGenericServer/cdevReactor/cdevTime.cc
Normal file
@@ -0,0 +1,210 @@
|
||||
#include "cdevTime.h"
|
||||
|
||||
cdevTime::cdevTime ( long sec, long usec )
|
||||
{
|
||||
setTime(sec, usec);
|
||||
}
|
||||
|
||||
|
||||
cdevTime::cdevTime ( double t )
|
||||
{
|
||||
setTime(t);
|
||||
}
|
||||
|
||||
|
||||
cdevTime::cdevTime ( timeval & t )
|
||||
{
|
||||
setTime(t);
|
||||
}
|
||||
|
||||
|
||||
cdevTime::cdevTime ( const cdevTime & t )
|
||||
{
|
||||
setTime(t);
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::getTime ( double * t ) const
|
||||
{
|
||||
if(t) *t = (double)tv_sec+(double)tv_usec/(double)ONE_SECOND;
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::getTime ( long * sec, long * usec) const
|
||||
{
|
||||
if(sec && usec)
|
||||
{
|
||||
*sec = tv_sec;
|
||||
*usec = tv_usec;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::getTime ( timeval * t ) const
|
||||
{
|
||||
if(t) {
|
||||
t->tv_sec = tv_sec;
|
||||
t->tv_usec = tv_usec;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::setTime ( void )
|
||||
{
|
||||
struct timeval tv_time;
|
||||
|
||||
gettimeofday(&tv_time);
|
||||
|
||||
tv_sec = tv_time.tv_sec;
|
||||
tv_usec = tv_time.tv_usec;
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::setTime ( double t )
|
||||
{
|
||||
tv_sec = (long)t;
|
||||
tv_usec = (long)((double)fmod(t, 1.0)*(double)ONE_SECOND);
|
||||
normalize();
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::setTime ( long sec, long usec )
|
||||
{
|
||||
tv_sec = sec;
|
||||
tv_usec = usec;
|
||||
normalize();
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::setTime ( timeval & t )
|
||||
{
|
||||
tv_sec = t.tv_sec;
|
||||
tv_usec = t.tv_usec;
|
||||
normalize();
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::setTime ( const cdevTime & t )
|
||||
{
|
||||
t.getTime(&tv_sec, &tv_usec);
|
||||
normalize();
|
||||
}
|
||||
|
||||
|
||||
void cdevTime::clear ( void )
|
||||
{
|
||||
tv_sec = 0;
|
||||
tv_usec = 0;
|
||||
}
|
||||
|
||||
|
||||
int cdevTime::isSet ( void ) const
|
||||
{
|
||||
return (tv_sec||tv_usec)?1:0;
|
||||
}
|
||||
|
||||
|
||||
int cdevTime::normalize ( void )
|
||||
{
|
||||
while ((this->tv_usec >= ONE_SECOND)
|
||||
|| (this->tv_sec < 0 && this->tv_usec > 0 ))
|
||||
{
|
||||
this->tv_usec -= ONE_SECOND;
|
||||
this->tv_sec++;
|
||||
}
|
||||
|
||||
while ((this->tv_usec <= -ONE_SECOND)
|
||||
|| (this->tv_sec > 0 && this->tv_usec < 0))
|
||||
{
|
||||
this->tv_usec += ONE_SECOND;
|
||||
this->tv_sec--;
|
||||
}
|
||||
|
||||
return isSet();
|
||||
}
|
||||
|
||||
|
||||
cdevTime & cdevTime::operator = ( const cdevTime & t )
|
||||
{
|
||||
if (this != &t)
|
||||
{
|
||||
tv_sec = t.tv_sec;
|
||||
tv_usec = t.tv_usec;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
cdevTime::operator double ( void )
|
||||
{
|
||||
return (double)tv_sec+(double)tv_usec/(double)ONE_SECOND;
|
||||
}
|
||||
|
||||
|
||||
cdevTime::operator timeval ( void )
|
||||
{
|
||||
timeval tv_time;
|
||||
|
||||
tv_time.tv_sec = tv_sec;
|
||||
tv_time.tv_usec = tv_usec;
|
||||
|
||||
return tv_time;
|
||||
}
|
||||
|
||||
|
||||
cdevTime operator + (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
cdevTime sum (t1.tv_sec + t2.tv_sec, t1.tv_usec + t2.tv_usec);
|
||||
|
||||
sum.normalize ();
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
cdevTime operator - (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
cdevTime delta (t1.tv_sec - t2.tv_sec, t1.tv_usec - t2.tv_usec);
|
||||
|
||||
delta.normalize ();
|
||||
return delta;
|
||||
}
|
||||
|
||||
|
||||
int operator > (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
if (t1.tv_sec > t2.tv_sec) return 1;
|
||||
else if (t1.tv_sec == t2.tv_sec && t1.tv_usec > t2.tv_usec) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
int operator >= (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
if (t1.tv_sec > t2.tv_sec) return 1;
|
||||
else if (t1.tv_sec == t2.tv_sec && t1.tv_usec >= t2.tv_usec) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
int operator < (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
return t2 > t1;
|
||||
}
|
||||
|
||||
|
||||
int operator <= (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
return t2 >= t1;
|
||||
}
|
||||
|
||||
|
||||
int operator == (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
return t1.tv_sec == t2.tv_sec && t1.tv_usec == t2.tv_usec;
|
||||
}
|
||||
|
||||
|
||||
int operator != (cdevTime t1, cdevTime t2)
|
||||
{
|
||||
return !(t1 == t2);
|
||||
}
|
||||
Reference in New Issue
Block a user