summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/FileWriteBytestream.cpp')
-rw-r--r--Swiften/FileTransfer/FileWriteBytestream.cpp58
1 files changed, 33 insertions, 25 deletions
diff --git a/Swiften/FileTransfer/FileWriteBytestream.cpp b/Swiften/FileTransfer/FileWriteBytestream.cpp
index 6c11eb0..e7daa2c 100644
--- a/Swiften/FileTransfer/FileWriteBytestream.cpp
+++ b/Swiften/FileTransfer/FileWriteBytestream.cpp
@@ -1,44 +1,52 @@
/*
- * Copyright (c) 2010-2013 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
+ * Copyright (c) 2010-2016 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
*/
-#include <boost/filesystem/fstream.hpp>
+#include <Swiften/FileTransfer/FileWriteBytestream.h>
+
#include <cassert>
-#include <boost/numeric/conversion/cast.hpp>
-#include <Swiften/FileTransfer/FileWriteBytestream.h>
+#include <boost/filesystem/fstream.hpp>
+#include <boost/numeric/conversion/cast.hpp>
namespace Swift {
-FileWriteBytestream::FileWriteBytestream(const boost::filesystem::path& file) : file(file), stream(NULL) {
+FileWriteBytestream::FileWriteBytestream(const boost::filesystem::path& file) : file(file), stream(nullptr) {
}
FileWriteBytestream::~FileWriteBytestream() {
- if (stream) {
- stream->close();
- stream = NULL;
- }
+ if (stream) {
+ stream->close();
+ delete stream;
+ stream = nullptr;
+ }
}
-void FileWriteBytestream::write(const std::vector<unsigned char>& data) {
- if (data.empty()) {
- return;
- }
- if (!stream) {
- stream = new boost::filesystem::ofstream(file, std::ios_base::out|std::ios_base::binary);
- }
- assert(stream->good());
- stream->write(reinterpret_cast<const char*>(&data[0]), boost::numeric_cast<std::streamsize>(data.size()));
- onWrite(data);
+bool FileWriteBytestream::write(const std::vector<unsigned char>& data) {
+ if (data.empty()) {
+ return true;
+ }
+ if (!stream) {
+ stream = new boost::filesystem::ofstream(file, std::ios_base::out|std::ios_base::binary);
+ }
+ if (stream->good()) {
+ stream->write(reinterpret_cast<const char*>(&data[0]), boost::numeric_cast<std::streamsize>(data.size()));
+ if (stream->good()) {
+ onWrite(data);
+ return true;
+ }
+ }
+ return false;
}
void FileWriteBytestream::close() {
- if (stream) {
- stream->close();
- stream = NULL;
- }
+ if (stream) {
+ stream->close();
+ delete stream;
+ stream = nullptr;
+ }
}
}