SourceXtractorPlusPlus  0.13
Please provide a description of the project.
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 <algorithm>
26 
27 #include <assert.h>
28 
30 
32 
34 
35 namespace SourceXtractor {
36 
38 
39 FitsFileManager::FitsFileManager(unsigned int max_open_files) : m_max_open_files(max_open_files) {
40 }
41 
43  closeAllFiles();
44 }
45 
47  for (auto& file : m_fits_files) {
48  file.second->close();
49  }
50 }
51 
53  if (m_fits_files.find(filename) != m_fits_files.end()) {
54  auto fits_file = m_fits_files.at(filename);
55  if (writeable) {
56  fits_file->setWriteMode();
57  }
58 
59  return fits_file;
60  } else {
61  auto new_fits_file = std::shared_ptr<FitsFile>(new FitsFile(filename, writeable, shared_from_this()));
62  m_fits_files[filename] = new_fits_file;
63  return new_fits_file;
64  }
65 }
66 
67 
69  while (m_open_files.size() > m_max_open_files) {
70  auto& file_to_close = m_fits_files[m_open_files.back()];
71  file_to_close->close();
72  }
73 }
74 
77 }
78 
80  auto it = m_fits_files.find(filename);
81  if (it != m_fits_files.end()) {
82  it->second->close();
83  m_fits_files.erase(filename);
84  }
85 }
86 
87 
90  if (iter == m_open_files.end()) {
92  }
94 }
95 
96 
97 }
SourceXtractor::FitsFileManager::~FitsFileManager
virtual ~FitsFileManager()
Definition: FitsFileManager.cpp:42
std::string
STL class.
std::shared_ptr
STL class.
std::list::push_front
T push_front(T... args)
conf.filename
string filename
Definition: conf.py:63
std::find
T find(T... args)
std::list::size
T size(T... args)
SourceXtractor::FitsFileManager::m_max_open_files
unsigned int m_max_open_files
Definition: FitsFileManager.h:64
std::list::back
T back(T... args)
SourceXtractor::FitsFileManager::m_open_files
std::list< std::string > m_open_files
Definition: FitsFileManager.h:65
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:68
SourceXtractor::FitsFileManager::closeAndPurgeFile
void closeAndPurgeFile(const std::string &filename)
Definition: FitsFileManager.cpp:79
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:67
SourceXtractor::FitsFileManager::closeAllFiles
void closeAllFiles()
Definition: FitsFileManager.cpp:46
std::list::remove
T remove(T... args)
std::list::begin
T begin(T... args)
SourceXtractor::FitsFileManager::m_fits_files
std::unordered_map< std::string, std::shared_ptr< FitsFile > > m_fits_files
Definition: FitsFileManager.h:62
SourceXtractor::FitsFileManager::reportOpenedFile
void reportOpenedFile(const std::string &filename)
Definition: FitsFileManager.cpp:88
std::list::end
T end(T... args)
SourceXtractor::FitsFileManager::getFitsFile
std::shared_ptr< FitsFile > getFitsFile(const std::string &filename, bool writeable=false)
Definition: FitsFileManager.cpp:52
FitsFile.h
FitsFileManager.h
SourceXtractor::FitsFileManager::FitsFileManager
FitsFileManager(unsigned int max_open_files=500)
Definition: FitsFileManager.cpp:39
SourceXtractor::FitsFileManager::reportClosedFile
void reportClosedFile(const std::string &filename)
Definition: FitsFileManager.cpp:75