Alexandria  2.19
Please provide a description of the project.
LRUFileManager.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012-2021 Euclid Science Ground Segment
3  *
4  * This library is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Lesser General Public License as published by the Free
6  * Software Foundation; either version 3.0 of the License, or (at your option)
7  * any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12  * details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef POOLTESTS_LRUFILEMANAGER_H
20 #define POOLTESTS_LRUFILEMANAGER_H
21 
22 #include "FileManager.h"
23 
24 namespace Euclid {
25 namespace FilePool {
26 
30 class LRUFileManager final : public FileManager {
31 public:
37  explicit LRUFileManager(unsigned limit = 500);
38  virtual ~LRUFileManager();
39 
40  void notifyUsed(FileId id) override;
41 
42  unsigned getLimit() const;
43  unsigned getUsed() const;
44  unsigned getAvailable() const;
45 
46 protected:
47  void notifyIntentToOpen(bool write) override;
48  void notifyOpenedFile(FileId id) override;
49  void notifyClosedFile(FileId id) override;
50 
51 private:
52  unsigned m_limit;
56 };
57 
58 } // namespace FilePool
59 } // namespace Euclid
60 
61 #endif // POOLTESTS_LRUFILEMANAGER_H
Euclid::FilePool::FileManager::FileId
FileMetadata * FileId
Opaque FileId, its concrete type should only be assumed to be copyable and hashable.
Definition: FileManager.h:62
std::list< FileId >
Euclid::FilePool::LRUFileManager::getLimit
unsigned getLimit() const
Definition: LRUFileManager.cpp:89
Euclid::FilePool::LRUFileManager::~LRUFileManager
virtual ~LRUFileManager()
Definition: LRUFileManager.cpp:35
Euclid::FilePool::LRUFileManager::notifyUsed
void notifyUsed(FileId id) override
Definition: LRUFileManager.cpp:74
Euclid::FilePool::LRUFileManager::getUsed
unsigned getUsed() const
Definition: LRUFileManager.cpp:93
Euclid::FilePool::LRUFileManager::notifyClosedFile
void notifyClosedFile(FileId id) override
Definition: LRUFileManager.cpp:67
Euclid::FilePool::LRUFileManager::getAvailable
unsigned getAvailable() const
Definition: LRUFileManager.cpp:97
Euclid::FilePool::LRUFileManager::notifyIntentToOpen
void notifyIntentToOpen(bool write) override
Definition: LRUFileManager.cpp:39
Euclid::FilePool::LRUFileManager::notifyOpenedFile
void notifyOpenedFile(FileId id) override
Definition: LRUFileManager.cpp:60
Euclid::FilePool::FileManager
Definition: FileManager.h:56
Euclid::FilePool::LRUFileManager
Definition: LRUFileManager.h:30
std::map
STL class.
Euclid::FilePool::LRUFileManager::m_sorted_ids
std::list< FileId > m_sorted_ids
Sorted from less to more recent.
Definition: LRUFileManager.h:54
Euclid::FilePool::LRUFileManager::LRUFileManager
LRUFileManager(unsigned limit=500)
Definition: LRUFileManager.cpp:26
Euclid::FilePool::LRUFileManager::m_current_pos
std::map< FileId, std::list< FileId >::iterator > m_current_pos
Definition: LRUFileManager.h:55
FileManager.h
Euclid
Definition: InstOrRefHolder.h:29
Euclid::FilePool::LRUFileManager::m_limit
unsigned m_limit
Definition: LRUFileManager.h:52