IBR-DTNSuite
0.12
Main Page
Namespaces
Classes
Files
File List
File Members
ScopeControlHopLimitBlock.cpp
Go to the documentation of this file.
1
/*
2
* ScopeControlHopLimitBlock.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/ScopeControlHopLimitBlock.h
"
23
24
namespace
dtn
25
{
26
namespace
data
27
{
28
const
dtn::data::block_t
ScopeControlHopLimitBlock::BLOCK_TYPE
= 199;
29
30
dtn::data::Block
*
ScopeControlHopLimitBlock::Factory::create
()
31
{
32
return
new
ScopeControlHopLimitBlock
();
33
}
34
35
ScopeControlHopLimitBlock::ScopeControlHopLimitBlock
()
36
: dtn::data::
Block
(
ScopeControlHopLimitBlock
::
BLOCK_TYPE
)
37
{
38
// set the replicate in every fragment bit
39
set
(
REPLICATE_IN_EVERY_FRAGMENT
,
true
);
40
}
41
42
ScopeControlHopLimitBlock::~ScopeControlHopLimitBlock
()
43
{
44
}
45
46
Number
ScopeControlHopLimitBlock::getHopsToLive
()
const
47
{
48
if
(_limit < _count)
return
0;
49
return
_limit - _count;
50
}
51
52
void
ScopeControlHopLimitBlock::increment
(
const
Number
&hops)
53
{
54
_count += hops;
55
}
56
57
void
ScopeControlHopLimitBlock::setLimit
(
const
Number
&hops)
58
{
59
_count = 0;
60
_limit = hops;
61
}
62
63
Length
ScopeControlHopLimitBlock::getLength
()
const
64
{
65
return
_count.
getLength
() + _limit.
getLength
();
66
}
67
68
std::ostream&
ScopeControlHopLimitBlock::serialize
(std::ostream &stream,
Length
&length)
const
69
{
70
stream << _count;
71
stream << _limit;
72
length +=
getLength
();
73
return
stream;
74
}
75
76
std::istream&
ScopeControlHopLimitBlock::deserialize
(std::istream &stream,
const
Length
&)
77
{
78
stream >> _count;
79
stream >> _limit;
80
return
stream;
81
}
82
}
/* namespace data */
83
}
/* namespace dtn */
ibrdtn
ibrdtn
data
ScopeControlHopLimitBlock.cpp
Generated on Thu Mar 27 2014 09:26:21 for IBR-DTNSuite by
1.8.4