IBR-DTNSuite
0.12
Main Page
Namespaces
Classes
Files
File List
File Members
IBR-DTNSuite
Namespaces
Classes
Files
File List
daemon
ibrcommon
ibrdtn
tools
src
io
streaming
BundleStream.cpp
BundleStream.h
BundleStreamBuf.cpp
BundleStreamBuf.h
StreamBundle.cpp
StreamBundle.h
config.h
dtnconvert.cpp
dtninbox.cpp
dtnoutbox.cpp
dtnping.cpp
dtnrecv.cpp
dtnsend.cpp
dtnstream.cpp
dtntracepath.cpp
dtntrigger.cpp
dtntunnel.cpp
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
return
_ref.
size
();
65
}
tools
src
streaming
StreamBundle.cpp
Generated on Thu Mar 27 2014 09:26:21 for IBR-DTNSuite by
1.8.4