diff options
author | Pavel Moravec <pmoravec@apache.org> | 2014-01-16 13:45:07 +0000 |
---|---|---|
committer | Pavel Moravec <pmoravec@apache.org> | 2014-01-16 13:45:07 +0000 |
commit | 9f55006a1fdd704c7550613ff267b6ba50b8af0b (patch) | |
tree | ecd82dd05214b7804c1dd673558d6cb0bab05501 | |
parent | 3fa06e444faa9c3a28133abdc9b4b0b784ef8703 (diff) | |
download | qpid-python-9f55006a1fdd704c7550613ff267b6ba50b8af0b.tar.gz |
QPID-5485 Deleting paged queue does not remove underlying file
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1558790 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpid/broker/PagedQueue.cpp | 5 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/broker/PagedQueue.h | 1 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/MemoryMappedFile.h | 4 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp | 5 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp | 3 |
5 files changed, 18 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/PagedQueue.cpp b/qpid/cpp/src/qpid/broker/PagedQueue.cpp index 9701617b01..3186182735 100644 --- a/qpid/cpp/src/qpid/broker/PagedQueue.cpp +++ b/qpid/cpp/src/qpid/broker/PagedQueue.cpp @@ -75,6 +75,11 @@ PagedQueue::PagedQueue(const std::string& name_, const std::string& directory, u QPID_LOG(debug, "PagedQueue[" << path << "]"); } +PagedQueue::~PagedQueue() +{ + file.close(path); +} + size_t PagedQueue::size() { size_t total(0); diff --git a/qpid/cpp/src/qpid/broker/PagedQueue.h b/qpid/cpp/src/qpid/broker/PagedQueue.h index 4bb4953ba6..7a28ac545a 100644 --- a/qpid/cpp/src/qpid/broker/PagedQueue.h +++ b/qpid/cpp/src/qpid/broker/PagedQueue.h @@ -38,6 +38,7 @@ class ProtocolRegistry; class PagedQueue : public Messages { public: PagedQueue(const std::string& name, const std::string& directory, uint maxLoaded, uint pageFactor, ProtocolRegistry& protocols); + ~PagedQueue(); size_t size(); bool deleted(const QueueCursor&); void publish(const Message& added); diff --git a/qpid/cpp/src/qpid/sys/MemoryMappedFile.h b/qpid/cpp/src/qpid/sys/MemoryMappedFile.h index 84548a5f6f..43e4c852af 100644 --- a/qpid/cpp/src/qpid/sys/MemoryMappedFile.h +++ b/qpid/cpp/src/qpid/sys/MemoryMappedFile.h @@ -40,6 +40,10 @@ class MemoryMappedFile { */ QPID_COMMON_EXTERN std::string open(const std::string& name, const std::string& directory); /** + * Closes and removes the file that can be mapped by region into memory + */ + QPID_COMMON_EXTERN void close(const std::string& path); + /** * Returns the page size */ QPID_COMMON_EXTERN size_t getPageSize(); diff --git a/qpid/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp b/qpid/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp index b60aaae2e1..477ace5451 100644 --- a/qpid/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp +++ b/qpid/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp @@ -71,6 +71,11 @@ std::string MemoryMappedFile::open(const std::string& name, const std::string& d state->fd = fd; return path; } +void MemoryMappedFile::close(const std::string& path) +{ + ::close(state->fd); + ::unlink(path.c_str()); +} size_t MemoryMappedFile::getPageSize() { return ::sysconf(_SC_PAGE_SIZE); diff --git a/qpid/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp b/qpid/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp index ba3358ae23..9bb3fa2320 100644 --- a/qpid/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp +++ b/qpid/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp @@ -31,6 +31,9 @@ std::string MemoryMappedFile::open(const std::string& /*name*/, const std::strin { return std::string(); } +void MemoryMappedFile::close(const std::string& /*path*/) +{ +} size_t MemoryMappedFile::getPageSize() { return 0; |