IBR-DTNSuite  0.10
DTNTime.cpp
Go to the documentation of this file.
1 /*
2  * DTNTime.cpp
3  *
4  * Copyright (C) 2011 IBR, TU Braunschweig
5  *
6  * Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
22 #include "ibrdtn/data/DTNTime.h"
23 #include "ibrdtn/utils/Clock.h"
24 #include <sys/time.h>
25 
26 namespace dtn
27 {
28  namespace data
29  {
31  : _seconds(0), _nanoseconds(0)
32  {
33  set();
34  }
35 
36  DTNTime::DTNTime(const Timestamp &seconds, const Number &nanoseconds)
37  : _seconds(seconds), _nanoseconds(nanoseconds)
38  {
39  }
40 
42  {
43  }
44 
45  void DTNTime::set()
46  {
47  timeval tv;
49  _seconds = tv.tv_sec;
50  _nanoseconds = Number(tv.tv_usec) * 1000;
51  }
52 
54  {
55  return _seconds.getLength() + _nanoseconds.getLength();
56  }
57 
59  {
60  return _seconds;
61  }
62 
64  {
65  return _nanoseconds;
66  }
67 
68  void DTNTime::operator+=(const Timestamp &value)
69  {
70  _seconds += value;
71  }
72 
73  std::ostream& operator<<(std::ostream &stream, const dtn::data::DTNTime &obj)
74  {
75  stream << obj._seconds << obj._nanoseconds;
76  return stream;
77  }
78 
79  std::istream& operator>>(std::istream &stream, dtn::data::DTNTime &obj)
80  {
81  stream >> obj._seconds;
82  stream >> obj._nanoseconds;
83  return stream;
84  }
85  }
86 }