Jpp
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
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
 
const std::size_t 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  }

◆ 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  {}

◆ ~DumpFile()

DumpFile::~DumpFile ( )
inline

Definition at line 69 of file dump_file.hh.

70  {
71  m_outfile.close();
72  }

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  }

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

const std::size_t 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:
FilenameGenerator::generate
void generate()
Definition: dump_file.hh:29
DumpFile::m_current_file_size
std::size_t m_current_file_size
Definition: dump_file.hh:57
DumpFile::m_fg
FilenameGenerator m_fg
Definition: dump_file.hh:56
JTOOLS::n
const int n
Definition: JPolint.hh:628
DumpFile::m_pos
std::vector< std::size_t > m_pos
Definition: dqdumpfile.hh:68
DumpFile::m_max_file_size
const std::size_t m_max_file_size
Definition: dump_file.hh:58
CLBDataGram::raw
char * raw()
Definition: clb_datagram.hh:65
FilenameGenerator::name
std::string name(std::size_t run_number, unsigned int detector_id) const
Definition: dump_file.hh:34
Packet
Definition: dqdumpfile.hh:13
DumpFile::m_outfile
std::ofstream m_outfile
Definition: dump_file.hh:55
CLBDataGram::getRunNumber
uint32_t getRunNumber() const
Definition: clb_datagram.hh:85
CLBDataGram::size
size_t size() const
Definition: clb_datagram.hh:49
DumpFile::m_stream
std::ifstream m_stream
Definition: dqdumpfile.hh:67