IBR-DTNSuite
0.8
|
00001 /* 00002 * DTNTime.cpp 00003 * 00004 * Created on: 15.12.2009 00005 * Author: morgenro 00006 */ 00007 00008 #include "ibrdtn/data/DTNTime.h" 00009 #include "ibrdtn/utils/Clock.h" 00010 #include <sys/time.h> 00011 00012 namespace dtn 00013 { 00014 namespace data 00015 { 00016 DTNTime::DTNTime() 00017 : _seconds(0), _nanoseconds(0) 00018 { 00019 set(); 00020 } 00021 00022 DTNTime::DTNTime(size_t seconds, size_t nanoseconds) 00023 : _seconds(seconds), _nanoseconds(nanoseconds) 00024 { 00025 } 00026 00027 DTNTime::DTNTime(SDNV seconds, SDNV nanoseconds) 00028 : _seconds(seconds), _nanoseconds(nanoseconds) 00029 { 00030 } 00031 00032 DTNTime::~DTNTime() 00033 { 00034 } 00035 00036 void DTNTime::set() 00037 { 00038 timeval tv; 00039 dtn::utils::Clock::gettimeofday(&tv); 00040 _seconds = tv.tv_sec; 00041 _nanoseconds = SDNV(tv.tv_usec * 1000); 00042 } 00043 00044 size_t DTNTime::getLength() const 00045 { 00046 return _seconds.getLength() + _nanoseconds.getLength(); 00047 } 00048 00049 SDNV DTNTime::getTimestamp() const 00050 { 00051 return _seconds; 00052 } 00053 00054 void DTNTime::operator+=(const size_t value) 00055 { 00056 _seconds += value; 00057 } 00058 00059 std::ostream& operator<<(std::ostream &stream, const dtn::data::DTNTime &obj) 00060 { 00061 stream << obj._seconds << obj._nanoseconds; 00062 return stream; 00063 } 00064 00065 std::istream& operator>>(std::istream &stream, dtn::data::DTNTime &obj) 00066 { 00067 stream >> obj._seconds; 00068 stream >> obj._nanoseconds; 00069 return stream; 00070 } 00071 } 00072 }