IBR-DTNSuite  0.8
ibrdtn/ibrdtn/data/DTNTime.cpp
Go to the documentation of this file.
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 }