SourceXtractorPlusPlus
0.11
Please provide a description of the project.
SEFramework
src
lib
FITS
FitsFileManager.cpp
Go to the documentation of this file.
1
17
/*
18
* FitsFileManager.cpp
19
*
20
* Created on: Sep 19, 2019
21
* Author: mschefer
22
*/
23
24
#include <iostream>
25
#include <assert.h>
26
27
#include "
ElementsKernel/Exception.h
"
28
29
#include "
SEFramework/FITS/FitsFile.h
"
30
31
#include "
SEFramework/FITS/FitsFileManager.h
"
32
33
namespace
SourceXtractor
{
34
35
std::shared_ptr<FitsFileManager>
FitsFileManager::s_instance
;
36
37
FitsFileManager::FitsFileManager
(
unsigned
int
max_open_files) : m_max_open_files(max_open_files) {
38
}
39
40
FitsFileManager::~FitsFileManager
() {
41
closeAllFiles
();
42
}
43
44
void
FitsFileManager::closeAllFiles
() {
45
for
(
auto
& file :
m_fits_files
) {
46
file.second->close();
47
}
48
}
49
50
std::shared_ptr<FitsFile>
FitsFileManager::getFitsFile
(
const
std::string
&
filename
,
bool
writeable) {
51
if
(
m_fits_files
.find(
filename
) !=
m_fits_files
.end()) {
52
auto
fits_file =
m_fits_files
.at(
filename
);
53
if
(writeable) {
54
fits_file->setWriteMode();
55
}
56
57
return
fits_file;
58
}
else
{
59
auto
new_fits_file =
std::shared_ptr<FitsFile>
(
new
FitsFile
(
filename
, writeable,
shared_from_this
()));
60
m_fits_files
[
filename
] = new_fits_file;
61
return
new_fits_file;
62
}
63
}
64
65
66
void
FitsFileManager::closeExtraFiles
() {
67
while
(
m_open_files
.
size
() >
m_max_open_files
) {
68
auto
& file_to_close =
m_fits_files
[
m_open_files
.
back
()];
69
file_to_close->close();
70
m_open_files
.
pop_back
();
71
}
72
}
73
74
}
SourceXtractor::FitsFileManager::~FitsFileManager
virtual ~FitsFileManager()
Definition:
FitsFileManager.cpp:40
std::string
STL class.
std::shared_ptr
STL class.
conf.filename
string filename
Definition:
conf.py:63
std::list::size
T size(T... args)
SourceXtractor::FitsFileManager::m_max_open_files
unsigned int m_max_open_files
Definition:
FitsFileManager.h:59
std::list::back
T back(T... args)
SourceXtractor::FitsFileManager::m_open_files
std::list< std::string > m_open_files
Definition:
FitsFileManager.h:60
SourceXtractor::FitsFile
represents access to a whole FITS file and handles loading and caching FITS headers
Definition:
FitsFile.h:44
SourceXtractor::FitsFileManager::closeExtraFiles
void closeExtraFiles()
Definition:
FitsFileManager.cpp:66
SourceXtractor
Definition:
Aperture.h:30
std::enable_shared_from_this< FitsFileManager >::shared_from_this
T shared_from_this(T... args)
Exception.h
SourceXtractor::FitsFileManager::s_instance
static std::shared_ptr< FitsFileManager > s_instance
Definition:
FitsFileManager.h:62
SourceXtractor::FitsFileManager::closeAllFiles
void closeAllFiles()
Definition:
FitsFileManager.cpp:44
std::list::pop_back
T pop_back(T... args)
SourceXtractor::FitsFileManager::m_fits_files
std::unordered_map< std::string, std::shared_ptr< FitsFile > > m_fits_files
Definition:
FitsFileManager.h:57
SourceXtractor::FitsFileManager::getFitsFile
std::shared_ptr< FitsFile > getFitsFile(const std::string &filename, bool writeable=false)
Definition:
FitsFileManager.cpp:50
FitsFile.h
FitsFileManager.h
SourceXtractor::FitsFileManager::FitsFileManager
FitsFileManager(unsigned int max_open_files=500)
Definition:
FitsFileManager.cpp:37
Generated by
1.8.18