ATLAS Offline Software
Loading...
Searching...
No Matches
atomic_output Class Reference

#include <PileUpMTAlg.h>

Collaboration diagram for atomic_output:

Public Member Functions

 atomic_output ()=default
bool init (const std::string &filename)
 ~atomic_output ()
void print (const std::string &str)

Private Attributes

std::FILE * m_file {}
std::mutex m_mtx {}

Detailed Description

Definition at line 33 of file PileUpMTAlg.h.

Constructor & Destructor Documentation

◆ atomic_output()

atomic_output::atomic_output ( )
default

◆ ~atomic_output()

atomic_output::~atomic_output ( )
inline

Definition at line 56 of file PileUpMTAlg.h.

56 {
57 std::lock_guard lck{m_mtx};
58 if (m_file != nullptr) {
59 std::fclose(m_file);
60 m_file = nullptr;
61 }
62 }
std::FILE * m_file
Definition PileUpMTAlg.h:35
std::mutex m_mtx
Definition PileUpMTAlg.h:36

Member Function Documentation

◆ init()

bool atomic_output::init ( const std::string & filename)
inline

Definition at line 40 of file PileUpMTAlg.h.

40 {
41 using namespace std::chrono;
42 std::lock_guard lck{m_mtx};
43 if (m_file != nullptr) {
44 return true;
45 }
46 m_file = std::fopen(filename.c_str(), "a");
47 if (m_file == nullptr) {
48 return false;
49 }
50 auto time = system_clock::now();
51 auto header = std::format("FILE CREATED ON {:%Y-%m-%d} at {:%H:%M:%S %Z}\n",
52 time, time);
53 std::fputs(header.c_str(), m_file);
54 return true;
55 }
time(flags, cells_name, *args, **kw)

◆ print()

void atomic_output::print ( const std::string & str)
inline

Definition at line 64 of file PileUpMTAlg.h.

64 {
65 std::lock_guard lck{m_mtx};
66 std::fputs(str.c_str(), m_file);
67 std::fflush(m_file);
68 }

Member Data Documentation

◆ m_file

std::FILE* atomic_output::m_file {}
private

Definition at line 35 of file PileUpMTAlg.h.

35{};

◆ m_mtx

std::mutex atomic_output::m_mtx {}
private

Definition at line 36 of file PileUpMTAlg.h.

36{};

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