Alexandria
2.31.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
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::unique_ptr<FdWrapper>
fd_ptr;
39
{
40
std::lock_guard<std::mutex>
this_lock(
m_handler_mutex
);
41
auto
iter =
m_available_fd
.find(
id
);
42
if
(iter ==
m_available_fd
.end())
43
return
false
;
44
fd_ptr =
std::move
(iter->second);
45
m_available_fd
.erase(iter);
46
}
47
fd_ptr->close();
48
return
true
;
49
}
50
51
}
// namespace FilePool
52
}
// namespace Euclid
FileHandler.h
Euclid::FilePool::FileHandler::m_handler_mutex
std::mutex m_handler_mutex
Definition
FileHandler.h:89
Euclid::FilePool::FileHandler::~FileHandler
virtual ~FileHandler()
Destructor.
Definition
FileHandler.cpp:27
Euclid::FilePool::FileHandler::isReadOnly
bool isReadOnly() const
Definition
FileHandler.cpp:33
Euclid::FilePool::FileHandler::m_is_readonly
bool m_is_readonly
Definition
FileHandler.h:94
Euclid::FilePool::FileHandler::FileHandler
FileHandler(const boost::filesystem::path &path, std::weak_ptr< FileManager > file_manager)
Definition
FileHandler.cpp:24
Euclid::FilePool::FileHandler::m_available_fd
std::map< FileManager::FileId, std::unique_ptr< FdWrapper > > m_available_fd
Definition
FileHandler.h:93
Euclid::FilePool::FileHandler::close
bool close(FileManager::FileId id)
Definition
FileHandler.cpp:37
Euclid::FilePool::FileManager::FileId
intptr_t FileId
Opaque FileId, its concrete type should only be assumed to be copyable and hashable.
Definition
FileManager.h:65
std::lock_guard
std::move
T move(T... args)
Euclid
Definition
index_sequence.h:27
std::unique_ptr
std::weak_ptr
Generated by
1.9.8