diff options
-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; |