summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-09-29 20:21:01 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-09-29 20:21:01 (GMT)
commiteb25d910e7991503eaa74233f0b396648f512e88 (patch)
treecaeb9c22e97991be73235285c53fc93197a5eebb /Swiften/FileTransfer/ByteArrayReadBytestream.h
parentbea648fcd6bce4f0d7f19725f60e5b2b3ef0a340 (diff)
downloadswift-eb25d910e7991503eaa74233f0b396648f512e88.zip
swift-eb25d910e7991503eaa74233f0b396648f512e88.tar.bz2
Allow ReadBytestreams to be resumed.
Diffstat (limited to 'Swiften/FileTransfer/ByteArrayReadBytestream.h')
-rw-r--r--Swiften/FileTransfer/ByteArrayReadBytestream.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/Swiften/FileTransfer/ByteArrayReadBytestream.h b/Swiften/FileTransfer/ByteArrayReadBytestream.h
index a6945c3..6cbdef0 100644
--- a/Swiften/FileTransfer/ByteArrayReadBytestream.h
+++ b/Swiften/FileTransfer/ByteArrayReadBytestream.h
@@ -8,12 +8,13 @@
#include <vector>
+#include <Swiften/Base/Algorithm.h>
#include <Swiften/FileTransfer/ReadBytestream.h>
namespace Swift {
class ByteArrayReadBytestream : public ReadBytestream {
public:
- ByteArrayReadBytestream(const std::vector<unsigned char>& data) : data(data), position(0) {
+ ByteArrayReadBytestream(const std::vector<unsigned char>& data) : data(data), position(0), dataComplete(true) {
}
virtual std::vector<unsigned char> read(size_t size) {
@@ -29,11 +30,21 @@ namespace Swift {
}
virtual bool isFinished() const {
- return position >= data.size();
+ return position >= data.size() && dataComplete;
+ }
+
+ virtual void setDataComplete(bool b) {
+ dataComplete = b;
+ }
+
+ void addData(const std::vector<unsigned char>& moreData) {
+ append(data, moreData);
+ onDataAvailable();
}
private:
std::vector<unsigned char> data;
size_t position;
+ bool dataComplete;
};
}