Jpp  18.2.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
 
std::size_t const m_max_file_size
 

Detailed Description

Definition at line 65 of file dqdumpfile.hh.

Constructor & Destructor Documentation

DumpFile::DumpFile ( DumpFile const &  )
private
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::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  {}
FilenameGenerator m_fg
Definition: dump_file.hh:56
std::size_t m_current_file_size
Definition: dump_file.hh:57
std::size_t const m_max_file_size
Definition: dump_file.hh:58
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

DumpFile& DumpFile::operator= ( DumpFile const &  )
private
iterator DumpFile::begin ( )
inline

Definition at line 155 of file dqdumpfile.hh.

156  {
157  return iterator(this, 0);
158  }
iterator DumpFile::end ( )
inline

Definition at line 160 of file dqdumpfile.hh.

161  {
162  return iterator(this, m_pos.size());
163  }
std::vector< std::size_t > m_pos
Definition: dqdumpfile.hh:68
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  }
std::vector< std::size_t > m_pos
Definition: dqdumpfile.hh:68
const int n
Definition: JPolint.hh:786
std::ifstream m_stream
Definition: dqdumpfile.hh:67
std::size_t DumpFile::size ( ) const
inline

Definition at line 178 of file dqdumpfile.hh.

179  {
180  return m_pos.size();
181  }
std::vector< std::size_t > m_pos
Definition: dqdumpfile.hh:68
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  }
uint32_t getRunNumber() const
Definition: clb_datagram.hh:85
std::string name(std::size_t run_number, unsigned int detector_id) const
Definition: dump_file.hh:34
FilenameGenerator m_fg
Definition: dump_file.hh:56
size_t size() const
Definition: clb_datagram.hh:49
std::size_t m_current_file_size
Definition: dump_file.hh:57
std::size_t const m_max_file_size
Definition: dump_file.hh:58
char * raw()
Definition: clb_datagram.hh:65
std::ofstream m_outfile
Definition: dump_file.hh:55

Member Data Documentation

std::ifstream DumpFile::m_stream
private

Definition at line 67 of file dqdumpfile.hh.

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

Definition at line 68 of file dqdumpfile.hh.

std::ofstream DumpFile::m_outfile
private

Definition at line 55 of file dump_file.hh.

FilenameGenerator DumpFile::m_fg
private

Definition at line 56 of file dump_file.hh.

std::size_t DumpFile::m_current_file_size
private

Definition at line 57 of file dump_file.hh.

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: