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