From 28fb76bbc239ff5233677550410d59c87f634c5e Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 26 Apr 2022 17:44:07 +0200 Subject: [PATCH] Remove m_readers in `Library::impl` It is a deprecated interface and it is a simple wrapper on Archive. --- include/library.h | 2 +- src/library.cpp | 25 ++++++++----------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/include/library.h b/include/library.h index 1763de7d5..4a2bc787e 100644 --- a/include/library.h +++ b/include/library.h @@ -338,7 +338,7 @@ private: // functions std::vector getBookPropValueSet(BookStrPropMemFn p) const; BookIdCollection filterViaBookDB(const Filter& filter) const; void updateBookDB(const Book& book); - void dropReader(const std::string& bookId); + void dropCache(const std::string& bookId); private: //data std::unique_ptr mp_impl; diff --git a/src/library.cpp b/src/library.cpp index f77059404..f9e7affa4 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -70,7 +70,6 @@ struct Library::Impl Library::Revision m_revision; std::map m_books; - std::map> m_readers; std::map> m_archives; std::vector m_bookmarks; Xapian::WritableDatabase m_bookDB; @@ -139,7 +138,7 @@ bool Library::addBook(const Book& book) try { auto& oldbook = mp_impl->m_books.at(book.getId()); if ( ! booksReferToTheSameArchive(oldbook, book) ) { - dropReader(book.getId()); + dropCache(book.getId()); } oldbook.update(book); // XXX: This may have no effect if oldbook is readonly // XXX: Then m_bookDB will become out-of-sync with @@ -173,9 +172,8 @@ bool Library::removeBookmark(const std::string& zimId, const std::string& url) } -void Library::dropReader(const std::string& id) +void Library::dropCache(const std::string& id) { - mp_impl->m_readers.erase(id); mp_impl->m_archives.erase(id); } @@ -183,7 +181,7 @@ bool Library::removeBookById(const std::string& id) { std::lock_guard lock(m_mutex); mp_impl->m_bookDB.delete_document("Q" + id); - dropReader(id); + dropCache(id); return mp_impl->m_books.erase(id) == 1; } @@ -242,19 +240,12 @@ const Book& Library::getBookByPath(const std::string& path) const std::shared_ptr Library::getReaderById(const std::string& id) { - try { - std::lock_guard lock(m_mutex); - return mp_impl->m_readers.at(id); - } catch (std::out_of_range& e) {} - - const auto archive = getArchiveById(id); - if ( !archive ) + auto archive = getArchiveById(id); + if(archive) { + return std::make_shared(archive); + } else { return nullptr; - - const shared_ptr reader(new Reader(archive, true)); - std::lock_guard lock(m_mutex); - mp_impl->m_readers[id] = reader; - return reader; + } } std::shared_ptr Library::getArchiveById(const std::string& id)