IBR-DTNSuite
0.10
Main Page
Namespaces
Classes
Files
File List
File Members
AgeBlock.cpp
Go to the documentation of this file.
1
/*
2
* AgeBlock.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/AgeBlock.h
"
23
#include <
ibrcommon/TimeMeasurement.h
>
24
25
namespace
dtn
26
{
27
namespace
data
28
{
29
const
dtn::data::block_t
AgeBlock::BLOCK_TYPE
= 10;
30
31
dtn::data::Block
*
AgeBlock::Factory::create
()
32
{
33
return
new
AgeBlock
();
34
}
35
36
AgeBlock::AgeBlock
()
37
: dtn::data::
Block
(
AgeBlock
::
BLOCK_TYPE
)
38
{
39
_time.
start
();
40
41
// set the replicate in every fragment bit
42
set
(
REPLICATE_IN_EVERY_FRAGMENT
,
true
);
43
}
44
45
AgeBlock::~AgeBlock
()
46
{
47
}
48
49
dtn::data::Number
AgeBlock::getMicroseconds
()
const
50
{
51
ibrcommon::TimeMeasurement
time = this->_time;
52
time.
stop
();
53
return
_age +
static_cast<
size_t
>
(time.
getMicroseconds
());
54
}
55
56
dtn::data::Number
AgeBlock::getSeconds
()
const
57
{
58
return
(
getMicroseconds
()) / 1000000;
59
}
60
61
void
AgeBlock::addMicroseconds
(
const
dtn::data::Number
&value)
62
{
63
_age += value;
64
}
65
66
void
AgeBlock::setMicroseconds
(
const
dtn::data::Number
&value)
67
{
68
_age = value;
69
}
70
71
void
AgeBlock::addSeconds
(
const
dtn::data::Number
&value)
72
{
73
_age += (value * 1000000);
74
}
75
76
void
AgeBlock::setSeconds
(
const
dtn::data::Number
&value)
77
{
78
_age = value * 1000000;
79
}
80
81
dtn::data::Length
AgeBlock::getLength
()
const
82
{
83
return
getMicroseconds
().
getLength
();
84
}
85
86
std::ostream&
AgeBlock::serialize
(std::ostream &stream,
dtn::data::Length
&length)
const
87
{
88
const
dtn::data::Number
value =
getMicroseconds
();
89
stream << value;
90
length += value.
getLength
();
91
return
stream;
92
}
93
94
std::istream&
AgeBlock::deserialize
(std::istream &stream,
const
dtn::data::Length
&)
95
{
96
stream >> _age;
97
_time.
start
();
98
return
stream;
99
}
100
101
dtn::data::Length
AgeBlock::getLength_strict
()
const
102
{
103
return
1;
104
}
105
106
std::ostream&
AgeBlock::serialize_strict
(std::ostream &stream,
dtn::data::Length
&length)
const
107
{
108
// we have to ignore the age field, because this is very dynamic data
109
stream << (char)0;
110
length += 1;
111
return
stream;
112
}
113
}
114
}
ibrdtn
ibrdtn
data
AgeBlock.cpp
Generated on Mon Jul 22 2013 15:16:00 for IBR-DTNSuite by
1.8.3.1