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
boost::unique_lock< SharedMutex > UniqueLock
boost::shared_mutex SharedMutex
boost::shared_lock< SharedMutex > SharedLock
typename FileAccessorBase::SharedMutex SharedMutex
std::mutex m_handler_mutex
std::unique_ptr< FileAccessor< TFD > > getAccessor(Mode mode=kRead)
boost::filesystem::path m_path
virtual ~FileHandler()
Destructor.
std::unique_ptr< FileAccessor< TFD > > getReadAccessor(bool try_lock)
typename FileAccessorBase::UniqueLock UniqueLock
typename FileAccessorBase::SharedLock SharedLock
std::unique_ptr< FileAccessor< TFD > > getWriteAccessor(bool try_lock)
std::weak_ptr< FileManager > m_file_manager
std::map< FileManager::FileId, std::unique_ptr< FdWrapper > > m_available_fd
bool close(FileManager::FileId id)
intptr_t FileId
Opaque FileId, its concrete type should only be assumed to be copyable and hashable.
void close(FileId id, TFD &fd)
virtual ~FdWrapper()=default
FileManager * m_file_manager
TypedFdWrapper(FileManager::FileId id, TFD &&fd, FileManager *manager)