Belle II Software development
FileSystem::TemporaryFile Class Reference

Helper file to create a temporary file and ensure deletion if object goes out of scope. More...

#include <FileSystem.h>

Inheritance diagram for FileSystem::TemporaryFile:

Public Member Functions

 TemporaryFile (std::ios_base::openmode mode=std::ios_base::trunc|std::ios_base::out)
 construct a new temporary file
 
 TemporaryFile (const TemporaryFile &)=delete
 prevent assignment
 
 TemporaryFile (TemporaryFile &&)=delete
 and no move construction as basic_ios doesn't allow that
 
TemporaryFileoperator= (const TemporaryFile &)=delete
 prevent copy constructor
 
 ~TemporaryFile ()
 close file and delete on destruction
 
std::string getName () const
 get filename of the temporary file
 

Private Attributes

std::string m_filename
 filename of the temporary file
 

Detailed Description

Helper file to create a temporary file and ensure deletion if object goes out of scope.

Definition at line 128 of file FileSystem.h.

Constructor & Destructor Documentation

◆ TemporaryFile()

TemporaryFile ( std::ios_base::openmode mode = std::ios_base::trunc | std::ios_base::out)
explicit

construct a new temporary file

Definition at line 231 of file FileSystem.cc.

231 : std::fstream()
232{
233 char* temporaryFileName = strdup((std::filesystem::temp_directory_path() / "basf2_XXXXXX").c_str());
234 int fileDescriptor = mkstemp(temporaryFileName);
235 if (fileDescriptor == -1) {
236 B2ERROR("Cannot create temporary file: " << strerror(errno));
237 free(temporaryFileName);
238 return;
239 }
240 m_filename = std::string(temporaryFileName);
241 open(temporaryFileName, mode);
242 if (!is_open()) {
243 B2ERROR("Cannot open temporary file: " << strerror(errno));
244 }
245 free(temporaryFileName);
246 ::close(fileDescriptor);
247}
std::string m_filename
filename of the temporary file
Definition FileSystem.h:144

◆ ~TemporaryFile()

close file and delete on destruction

Definition at line 249 of file FileSystem.cc.

250{
251 close();
252 fs::remove(m_filename);
253}

Member Function Documentation

◆ getName()

std::string getName ( ) const
inline

get filename of the temporary file

Definition at line 141 of file FileSystem.h.

141{ return m_filename; }

Member Data Documentation

◆ m_filename

std::string m_filename
private

filename of the temporary file

Definition at line 144 of file FileSystem.h.


The documentation for this class was generated from the following files: