IBR-DTNSuite
0.10
Main Page
Namespaces
Classes
Files
File List
File Members
IBR-DTNSuite
Namespaces
Classes
Files
File List
daemon
ibrcommon
ibrdtn
ibrdtn
api
data
AdministrativeBlock.cpp
AdministrativeBlock.h
AgeBlock.cpp
AgeBlock.h
Block.cpp
Block.h
Bundle.cpp
Bundle.h
BundleBuilder.cpp
BundleBuilder.h
BundleFragment.cpp
BundleFragment.h
BundleID.cpp
BundleID.h
BundleList.cpp
BundleList.h
BundleMerger.cpp
BundleMerger.h
BundleSet.cpp
BundleSet.h
BundleString.cpp
BundleString.h
CompressedPayloadBlock.cpp
CompressedPayloadBlock.h
CustodySignalBlock.cpp
CustodySignalBlock.h
Dictionary.cpp
Dictionary.h
DTNTime.cpp
DTNTime.h
EID.cpp
EID.h
Exceptions.h
ExtensionBlock.cpp
ExtensionBlock.h
MetaBundle.cpp
MetaBundle.h
Number.h
PayloadBlock.cpp
PayloadBlock.h
PrimaryBlock.cpp
PrimaryBlock.h
SchedulingBlock.cpp
SchedulingBlock.h
ScopeControlHopLimitBlock.cpp
ScopeControlHopLimitBlock.h
SDNV.cpp
SDNV.h
Serializer.cpp
Serializer.h
StatusReportBlock.cpp
StatusReportBlock.h
StreamBlock.cpp
StreamBlock.h
TrackingBlock.cpp
TrackingBlock.h
security
streams
utils
config.h
ibrdtn.h
tools
File Members
Block.h
Go to the documentation of this file.
1
/*
2
* Block.h
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
#ifndef BLOCK_H_
23
#define BLOCK_H_
24
25
#include "
ibrdtn/data/EID.h
"
26
#include "
ibrdtn/data/Exceptions.h
"
27
#include "
ibrdtn/data/Number.h
"
28
#include "
ibrdtn/data/Dictionary.h
"
29
#include "
ibrdtn/data/Serializer.h
"
30
#include <
ibrcommon/Exceptions.h
>
31
#include <list>
32
33
namespace
dtn
34
{
35
namespace
data
36
{
37
class
BundleBuilder;
38
39
class
Block
40
{
41
friend
class
BundleBuilder
;
42
43
public
:
44
enum
ProcFlags
45
{
46
REPLICATE_IN_EVERY_FRAGMENT
= 1,
// 0 - Block must be replicated in every fragment.
47
TRANSMIT_STATUSREPORT_IF_NOT_PROCESSED
= 1 << 0x01,
// 1 - Transmit status report if block can't be processed.
48
DELETE_BUNDLE_IF_NOT_PROCESSED
= 1 << 0x02,
// 2 - Delete bundle if block can't be processed.
49
LAST_BLOCK
= 1 << 0x03,
// 3 - Last block.
50
DISCARD_IF_NOT_PROCESSED
= 1 << 0x04,
// 4 - Discard block if it can't be processed.
51
FORWARDED_WITHOUT_PROCESSED
= 1 << 0x05,
// 5 - Block was forwarded without being processed.
52
BLOCK_CONTAINS_EIDS
= 1 << 0x06
// 6 - Block contains an EID-reference field.
53
};
54
55
typedef
std::list<dtn::data::EID>
eid_list
;
56
57
virtual
~Block
();
58
62
Block
&
operator=
(
const
Block
&block);
63
67
bool
operator==
(
const
block_t
&
id
)
const
;
68
69
virtual
void
addEID
(
const
dtn::data::EID
&eid);
70
virtual
void
clearEIDs
();
71
virtual
const
eid_list
&
getEIDList
()
const
;
72
73
const
block_t
&
getType
()
const
{
return
_blocktype
; }
74
75
void
set
(
ProcFlags
flag,
const
bool
&value);
76
bool
get
(
ProcFlags
flag)
const
;
77
const
Bitset<ProcFlags>
&
getProcessingFlags
()
const
;
78
84
virtual
std::ostream &
serialize
(std::ostream &stream,
Length
&length)
const
= 0;
85
91
virtual
std::istream &
deserialize
(std::istream &stream,
const
Length
&length) = 0;
92
97
virtual
Length
getLength
()
const
= 0;
98
102
virtual
Length
getLength_strict
()
const
;
103
109
virtual
std::ostream &
serialize_strict
(std::ostream &stream,
Length
&length)
const
;
110
111
protected
:
116
Block
(
block_t
blocktype);
117
118
// block type of this block
119
block_t
_blocktype
;
120
121
// the list of EID references embedded in this block
122
eid_list
_eids
;
123
124
private
:
125
// block processing flags
126
Bitset<ProcFlags>
_procflags;
127
};
128
}
129
}
130
131
#endif
/* BLOCK_H_ */
ibrdtn
ibrdtn
data
Block.h
Generated on Mon Jul 22 2013 15:16:00 for IBR-DTNSuite by
1.8.3.1