Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
DumpFile Class Reference

#include <dqdumpfile.hh>

Classes

class  iterator
 

Public Member Functions

 DumpFile (std::string const &filename)
 
iterator begin ()
 
iterator end ()
 
Packet operator[] (std::size_t n)
 
std::size_t size () const
 
 DumpFile (const FilenameGenerator &fg, std::size_t max_file_size)
 
 ~DumpFile ()
 
bool write (const CLBDataGram *data, unsigned int detector_id)
 

Private Member Functions

 DumpFile (DumpFile const &)
 
DumpFileoperator= (DumpFile const &)
 

Private Attributes

std::ifstream m_stream
 
std::vector< std::size_t > m_pos
 
std::ofstream m_outfile
 
FilenameGenerator m_fg
 
std::size_t m_current_file_size
 
std::size_t const m_max_file_size
 

Detailed Description

Definition at line 65 of file dqdumpfile.hh.

Constructor & Destructor Documentation

◆ DumpFile() [1/3]

DumpFile::DumpFile ( DumpFile const & )
private

◆ DumpFile() [2/3]

DumpFile::DumpFile ( std::string const & filename)
inline

Definition at line 142 of file dqdumpfile.hh.

143 :
144 m_stream(filename.c_str())
145 {
146 while (m_stream) {
147 m_pos.push_back(m_stream.tellg());
148 uint32_t pack_size;
149 m_stream.read((char*) &pack_size, sizeof(pack_size));
150 m_stream.ignore(pack_size);
151 }
152 m_pos.pop_back();
153 }
std::vector< std::size_t > m_pos
Definition dqdumpfile.hh:68
std::ifstream m_stream
Definition dqdumpfile.hh:67

◆ DumpFile() [3/3]

DumpFile::DumpFile ( const FilenameGenerator & fg,
std::size_t max_file_size )
inline

Definition at line 62 of file dump_file.hh.

63 :
64 m_fg(fg),
66 m_max_file_size(max_file_size)
67 {}
std::size_t const m_max_file_size
Definition dump_file.hh:58
FilenameGenerator m_fg
Definition dump_file.hh:56
std::size_t m_current_file_size
Definition dump_file.hh:57

◆ ~DumpFile()

DumpFile::~DumpFile ( )
inline

Definition at line 69 of file dump_file.hh.

70 {
71 m_outfile.close();
72 }
std::ofstream m_outfile
Definition dump_file.hh:55

Member Function Documentation

◆ operator=()

DumpFile & DumpFile::operator= ( DumpFile const & )
private

◆ begin()

iterator DumpFile::begin ( )
inline

Definition at line 155 of file dqdumpfile.hh.

156 {
157 return iterator(this, 0);
158 }

◆ end()

iterator DumpFile::end ( )
inline

Definition at line 160 of file dqdumpfile.hh.

161 {
162 return iterator(this, m_pos.size());
163 }

◆ operator[]()

Packet DumpFile::operator[] ( std::size_t n)
inline

Definition at line 165 of file dqdumpfile.hh.

166 {
167 m_stream.clear();
168 m_stream.seekg(m_pos[n]);
169
170 uint32_t pack_size;
171 m_stream.read((char*) &pack_size, sizeof(pack_size));
172
173 Packet dg(pack_size);
174 m_stream.read(dg.data(), pack_size);
175 return dg;
176 }

◆ size()

std::size_t DumpFile::size ( ) const
inline

Definition at line 178 of file dqdumpfile.hh.

179 {
180 return m_pos.size();
181 }

◆ write()

bool DumpFile::write ( const CLBDataGram * data,
unsigned int detector_id )
inline

Definition at line 74 of file dump_file.hh.

75 {
76 if (m_outfile.is_open())
77 {
78 if (data->size() + m_current_file_size + sizeof(int) > m_max_file_size)
79 {
80 m_fg.generate();
81 m_outfile.close();
82
83 m_outfile.open(m_fg.name(data->getRunNumber(), detector_id).c_str());
85 }
86 }
87 else
88 {
89 m_outfile.open(m_fg.name(data->getRunNumber(), detector_id).c_str());
91 }
92
93 if (!m_outfile.is_open())
94 {
95 return false;
96 }
97
98 unsigned int const packet_size = data->size();
99 m_outfile.write(
100 static_cast<const char*>(
101 static_cast<const void*>(
102 &packet_size)),
103 sizeof(packet_size));
104
105 if (m_outfile.good())
106 {
107 m_current_file_size += sizeof(packet_size);
108 if (m_outfile.write(data->raw(), data->size()).good())
109 {
110 m_current_file_size += data->size();
111 return true;
112 }
113 else
114 {
115 return false;
116 }
117 }
118 return false;
119 }
std::string name(std::size_t run_number, unsigned int detector_id) const
Definition dump_file.hh:34

Member Data Documentation

◆ m_stream

std::ifstream DumpFile::m_stream
private

Definition at line 67 of file dqdumpfile.hh.

◆ m_pos

std::vector<std::size_t> DumpFile::m_pos
private

Definition at line 68 of file dqdumpfile.hh.

◆ m_outfile

std::ofstream DumpFile::m_outfile
private

Definition at line 55 of file dump_file.hh.

◆ m_fg

FilenameGenerator DumpFile::m_fg
private

Definition at line 56 of file dump_file.hh.

◆ m_current_file_size

std::size_t DumpFile::m_current_file_size
private

Definition at line 57 of file dump_file.hh.

◆ m_max_file_size

std::size_t const DumpFile::m_max_file_size
private

Definition at line 58 of file dump_file.hh.


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