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 | ac600277d5349b2f82518031310e0b9c7f4c6782 (patch) | |
| tree | 1ecc7f096646abf15d9e68cac7987fa56a730ee9 /cpp | |
| parent | 455d0358bbf7daf2946fb84212df8bb3e388be64 (diff) | |
| download | qpid-python-ac600277d5349b2f82518031310e0b9c7f4c6782.tar.gz | |
QPID-5485 Deleting paged queue does not remove underlying file
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1558790 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/src/qpid/broker/PagedQueue.cpp | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/PagedQueue.h | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/sys/MemoryMappedFile.h | 4 | ||||
| -rw-r--r-- | cpp/src/qpid/sys/posix/MemoryMappedFile.cpp | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/sys/windows/MemoryMappedFile.cpp | 3 |
5 files changed, 18 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/PagedQueue.cpp b/cpp/src/qpid/broker/PagedQueue.cpp index 9701617b01..3186182735 100644 --- a/cpp/src/qpid/broker/PagedQueue.cpp +++ b/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/cpp/src/qpid/broker/PagedQueue.h b/cpp/src/qpid/broker/PagedQueue.h index 4bb4953ba6..7a28ac545a 100644 --- a/cpp/src/qpid/broker/PagedQueue.h +++ b/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/cpp/src/qpid/sys/MemoryMappedFile.h b/cpp/src/qpid/sys/MemoryMappedFile.h index 84548a5f6f..43e4c852af 100644 --- a/cpp/src/qpid/sys/MemoryMappedFile.h +++ b/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/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp b/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp index b60aaae2e1..477ace5451 100644 --- a/cpp/src/qpid/sys/posix/MemoryMappedFile.cpp +++ b/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/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp b/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp index ba3358ae23..9bb3fa2320 100644 --- a/cpp/src/qpid/sys/windows/MemoryMappedFile.cpp +++ b/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; |
