summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/FileTransfer/FileWriteBytestream.h2
-rw-r--r--Swiften/FileTransfer/WriteBytestream.h1
-rw-r--r--Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp2
3 files changed, 3 insertions, 2 deletions
diff --git a/Swiften/FileTransfer/FileWriteBytestream.h b/Swiften/FileTransfer/FileWriteBytestream.h
index c563789..26ab98e 100644
--- a/Swiften/FileTransfer/FileWriteBytestream.h
+++ b/Swiften/FileTransfer/FileWriteBytestream.h
@@ -1,28 +1,28 @@
/*
* Copyright (c) 2010-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/path.hpp>
#include <Swiften/Base/API.h>
#include <Swiften/FileTransfer/WriteBytestream.h>
namespace Swift {
class SWIFTEN_API FileWriteBytestream : public WriteBytestream {
public:
FileWriteBytestream(const boost::filesystem::path& file);
virtual ~FileWriteBytestream();
virtual bool write(const std::vector<unsigned char>&);
- void close();
+ virtual void close();
private:
boost::filesystem::path file;
boost::filesystem::ofstream* stream;
};
}
diff --git a/Swiften/FileTransfer/WriteBytestream.h b/Swiften/FileTransfer/WriteBytestream.h
index 5d9c3f8..5452317 100644
--- a/Swiften/FileTransfer/WriteBytestream.h
+++ b/Swiften/FileTransfer/WriteBytestream.h
@@ -1,32 +1,33 @@
/*
* Copyright (c) 2010-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
#include <memory>
#include <vector>
#include <boost/signals2.hpp>
#include <Swiften/Base/API.h>
namespace Swift {
class SWIFTEN_API WriteBytestream {
public:
typedef std::shared_ptr<WriteBytestream> ref;
virtual ~WriteBytestream();
/**
* Write data from vector argument to bytestream.
*
* On success true is returned and \ref onWrite is called. On failure false is returned.
*/
virtual bool write(const std::vector<unsigned char>&) = 0;
+ virtual void close() {}
boost::signals2::signal<void (const std::vector<unsigned char>&)> onWrite;
};
}
diff --git a/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp b/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp
index 7823519..393d1d7 100644
--- a/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp
+++ b/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp
@@ -7,52 +7,52 @@
#include <boost/bind.hpp>
#include <boost/filesystem.hpp>
#include <boost/signals2.hpp>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <Swiften/Base/ByteArray.h>
#include <Swiften/FileTransfer/FileWriteBytestream.h>
using namespace Swift;
class FileWriteBytestreamTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(FileWriteBytestreamTest);
CPPUNIT_TEST(testSuccessfulWrite);
CPPUNIT_TEST(testFailingWrite);
CPPUNIT_TEST_SUITE_END();
public:
void setUp() {
onWriteWasCalled = false;
}
void testSuccessfulWrite() {
boost::filesystem::path filename = boost::filesystem::unique_path("write_file_bytestream_test_%%%%%%%%%%%%%%%%.bin");
std::shared_ptr<WriteBytestream> writeBytestream = std::make_shared<FileWriteBytestream>(filename.string());
writeBytestream->onWrite.connect(boost::bind(&FileWriteBytestreamTest::handleOnWrite, this, _1));
CPPUNIT_ASSERT_EQUAL(true, writeBytestream->write(createByteArray("Some data.")));
CPPUNIT_ASSERT_EQUAL(true, onWriteWasCalled);
-
+ writeBytestream->close();
boost::filesystem::remove(filename);
}
void testFailingWrite() {
std::shared_ptr<WriteBytestream> writeBytestream = std::make_shared<FileWriteBytestream>("");
writeBytestream->onWrite.connect(boost::bind(&FileWriteBytestreamTest::handleOnWrite, this, _1));
CPPUNIT_ASSERT_EQUAL(false, writeBytestream->write(createByteArray("Some data.")));
CPPUNIT_ASSERT_EQUAL(false, onWriteWasCalled);
}
void handleOnWrite(const std::vector<unsigned char>& /*data*/) {
onWriteWasCalled = true;
}
private:
bool onWriteWasCalled;
};
CPPUNIT_TEST_SUITE_REGISTRATION(FileWriteBytestreamTest);