Alexandria
2.19
Please provide a description of the project.
|
Go to the documentation of this file.
19 #ifndef POOLTESTS_FILEHANDLER_H
20 #define POOLTESTS_FILEHANDLER_H
24 #include <boost/filesystem/path.hpp>
56 template <
typename TFD>
75 template <
typename TFD>
116 template <
typename TFD>
119 template <
typename TFD>
126 #define FILEHANDLER_IMPL
128 #undef FILEHANDLER_IMPL
130 #endif // POOLTESTS_FILEHANDLER_H
FileMetadata * FileId
Opaque FileId, its concrete type should only be assumed to be copyable and hashable.
boost::unique_lock< SharedMutex > UniqueLock
virtual ~FileHandler()
Destructor.
boost::shared_mutex SharedMutex
std::weak_ptr< FileManager > m_file_manager
bool close(FileManager::FileId id)
typename FileAccessorBase::UniqueLock UniqueLock
typename FileAccessorBase::SharedMutex SharedMutex
std::map< FileManager::FileId, std::unique_ptr< FdWrapper > > m_available_fd
boost::filesystem::path m_path
typename FileAccessorBase::SharedLock SharedLock
std::mutex m_handler_mutex
FileManager * m_file_manager
FileHandler(const boost::filesystem::path &path, std::weak_ptr< FileManager > file_manager)
boost::shared_lock< SharedMutex > SharedLock
virtual ~FdWrapper()=default
std::unique_ptr< FileAccessor< TFD > > getWriteAccessor(bool try_lock)
void close(FileId id, TFD &fd)
TypedFdWrapper(FileManager::FileId id, TFD &&fd, FileManager *manager)
Elements::Path::Item path
std::unique_ptr< FileAccessor< TFD > > getAccessor(Mode mode=kRead)
std::unique_ptr< FileAccessor< TFD > > getReadAccessor(bool try_lock)