Alexandria
2.19
Please provide a description of the project.
FilePool
src
lib
FileHandler.cpp
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
#include "
FilePool/FileHandler.h
"
20
21
namespace
Euclid
{
22
namespace
FilePool {
23
24
FileHandler::FileHandler
(
const
boost::filesystem::path&
path
,
std::weak_ptr<FileManager>
file_manager)
25
: m_path(
path
), m_file_manager(file_manager), m_is_readonly(true) {}
26
27
FileHandler::~FileHandler
() {
28
for
(
auto
& avail :
m_available_fd
) {
29
avail.second->close();
30
}
31
}
32
33
bool
FileHandler::isReadOnly
()
const
{
34
return
m_is_readonly
;
35
}
36
37
bool
FileHandler::close
(
FileManager::FileId
id
) {
38
std::lock_guard<std::mutex>
this_lock(
m_handler_mutex
);
39
auto
iter =
m_available_fd
.find(
id
);
40
if
(iter ==
m_available_fd
.end())
41
return
false
;
42
iter->second->close();
43
m_available_fd
.erase(iter);
44
return
true
;
45
}
46
47
}
// namespace FilePool
48
}
// namespace Euclid
Euclid::FilePool::FileManager::FileId
FileMetadata * FileId
Opaque FileId, its concrete type should only be assumed to be copyable and hashable.
Definition:
FileManager.h:62
FileHandler.h
Euclid::FilePool::FileHandler::~FileHandler
virtual ~FileHandler()
Destructor.
Definition:
FileHandler.cpp:27
Euclid::FilePool::FileHandler::close
bool close(FileManager::FileId id)
Definition:
FileHandler.cpp:37
std::lock_guard
STL class.
Euclid::FilePool::FileHandler::m_available_fd
std::map< FileManager::FileId, std::unique_ptr< FdWrapper > > m_available_fd
Definition:
FileHandler.h:93
Euclid::FilePool::FileHandler::m_handler_mutex
std::mutex m_handler_mutex
Definition:
FileHandler.h:89
Euclid::FilePool::FileHandler::FileHandler
FileHandler(const boost::filesystem::path &path, std::weak_ptr< FileManager > file_manager)
Definition:
FileHandler.cpp:24
std::weak_ptr
STL class.
Euclid::FilePool::FileHandler::m_is_readonly
bool m_is_readonly
Definition:
FileHandler.h:94
path
Elements::Path::Item path
Euclid
Definition:
InstOrRefHolder.h:29
Euclid::FilePool::FileHandler::isReadOnly
bool isReadOnly() const
Definition:
FileHandler.cpp:33
Generated by
1.8.20