IBR-DTNSuite
0.10
Main Page
Namespaces
Classes
Files
File List
File Members
StreamBundle.cpp
Go to the documentation of this file.
1
/*
2
* StreamBundle.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 "
streaming/StreamBundle.h
"
23
#include <
ibrdtn/data/StreamBlock.h
>
24
25
StreamBundle::StreamBundle
()
26
: _ref(ibrcommon::BLOB::create())
27
{
28
dtn::data::StreamBlock
&block = push_front<dtn::data::StreamBlock>();
29
block.
setSequenceNumber
(0);
30
31
push_back
(_ref);
32
}
33
34
StreamBundle::StreamBundle
(
const
dtn::data::Bundle
&b)
35
: dtn::data::Bundle(b), _ref(find<dtn::data::PayloadBlock>().getBLOB())
36
{
37
}
38
39
StreamBundle::~StreamBundle
()
40
{
41
}
42
43
void
StreamBundle::append
(
const
char
* data,
size_t
length)
44
{
45
ibrcommon::BLOB::iostream
stream = _ref.
iostream
();
46
(*stream).seekp(0, ios::end);
47
(*stream).write(data, length);
48
}
49
50
void
StreamBundle::clear
()
51
{
52
ibrcommon::BLOB::iostream
stream = _ref.
iostream
();
53
stream.
clear
();
54
55
// increment the sequence number
56
try
{
57
dtn::data::StreamBlock
&block = find<dtn::data::StreamBlock>();
58
block.
setSequenceNumber
(block.
getSequenceNumber
() + 1);
59
}
catch
(
const
dtn::data::Bundle::NoSuchBlockFoundException
&) { };
60
}
61
62
size_t
StreamBundle::size
()
63
{
64
ibrcommon::BLOB::iostream
stream = _ref.
iostream
();
65
return
stream.
size
();
66
}
tools
src
streaming
StreamBundle.cpp
Generated on Mon Jul 22 2013 15:16:01 for IBR-DTNSuite by
1.8.3.1