CMS 3D CMS Logo

StreamerOutputFile Class Reference

StreamerOutputFile: Class for doing Streamer Write operations. More...

#include <IOPool/Streamer/interface/StreamerOutputFile.h>

List of all members.

Public Member Functions

uint32 adler32 () const
 StreamerOutputFile (const std::string &name)
uint64 write (const EventMsgView &)
 Performs write on EventMsgBuilder type, Header + Blob, both are written out.
uint64 write (const EventMsgBuilder &)
void write (const InitMsgView &)
 Performs write on InitMsgBuilder type, Header + Blob, both are written out.
void write (const InitMsgBuilder &)
uint32 writeEOF (uint32 statusCode, const std::vector< uint32 > &hltStats)
 ~StreamerOutputFile ()
 CTOR, takes file path name as argument.

Private Member Functions

void writeEventHeader (const EventMsgView &ineview)
void writeStart (const InitMsgView &inview)

Private Attributes

OutputFilestreamerfile_


Detailed Description

StreamerOutputFile: Class for doing Streamer Write operations.

Class for doing Streamer Write operations

Definition at line 20 of file StreamerOutputFile.h.


Constructor & Destructor Documentation

StreamerOutputFile::StreamerOutputFile ( const std::string &  name  )  [explicit]

Definition at line 10 of file StreamerOutputFile.cc.

References OutputFile::set_do_adler(), and streamerfile_.

00010                                                              :
00011   streamerfile_(new OutputFile(name))
00012   {
00013     streamerfile_->set_do_adler(1);
00014   }

StreamerOutputFile::~StreamerOutputFile (  ) 

CTOR, takes file path name as argument.

Definition at line 5 of file StreamerOutputFile.cc.

References streamerfile_.

00006   {
00007     delete streamerfile_;
00008   }


Member Function Documentation

uint32 StreamerOutputFile::adler32 (  )  const [inline]

Definition at line 52 of file StreamerOutputFile.h.

References OutputFile::adler32(), and streamerfile_.

00052 { return streamerfile_->adler32(); }

uint64 StreamerOutputFile::write ( const EventMsgView ineview  ) 

Performs write on EventMsgBuilder type, Header + Blob, both are written out.

RETURNS the Offset in Stream while at which Event was written.

Offset where current event starts

Offset of last written event

Definition at line 22 of file StreamerOutputFile.cc.

References OutputFile::current_offset(), lat::endl(), EventMsgView::eventData(), Exception, OutputFile::fileName(), EventMsgView::headerSize(), OutputFile::inc_events(), OutputFile::set_last_event_offset(), EventMsgView::size(), streamerfile_, OutputFile::write(), and writeEventHeader().

00023   {
00025     uint64 offset_to_return = streamerfile_->current_offset();
00026 
00028     streamerfile_->set_last_event_offset(streamerfile_->current_offset());
00029 
00030     writeEventHeader(ineview);
00031     bool ret = streamerfile_->write((const char*) ineview.eventData(),
00032                                     ineview.size() - ineview.headerSize());
00033     if (ret) {
00034       throw cms::Exception("OutputFile", "write(EventMsgView)")
00035         << "Error writing streamer event data to "
00036         << streamerfile_->fileName() << ".  Possibly the output disk "
00037         << "is full?" << std::endl;
00038     }
00039 
00040     streamerfile_->inc_events();
00041 
00042     return offset_to_return;
00043   }

uint64 StreamerOutputFile::write ( const EventMsgBuilder ineview  ) 

Definition at line 16 of file StreamerOutputFile.cc.

References EventMsgBuilder::startAddress(), and write().

00017   {
00018     EventMsgView tmpView(ineview.startAddress());
00019     return write(tmpView);
00020   }

void StreamerOutputFile::write ( const InitMsgView inview  ) 

Performs write on InitMsgBuilder type, Header + Blob, both are written out.

Offset of first event to be written

Definition at line 64 of file StreamerOutputFile.cc.

References OutputFile::current_offset(), InitMsgView::descData(), lat::endl(), Exception, OutputFile::fileName(), InitMsgView::headerSize(), OutputFile::set_first_event_offset(), InitMsgView::size(), streamerfile_, OutputFile::write(), and writeStart().

00065   {
00066     writeStart(inview);
00067     bool ret = streamerfile_->write((const char*) inview.descData(),
00068                                     inview.size() - inview.headerSize());
00069     if (ret) {
00070       throw cms::Exception("OutputFile", "write(InitMsgView)")
00071         << "Error writing streamer header data to "
00072         << streamerfile_->fileName() << ".  Possibly the output disk "
00073         << "is full?" << std::endl;
00074     }
00075 
00077     streamerfile_->set_first_event_offset(streamerfile_->current_offset());
00078   }

void StreamerOutputFile::write ( const InitMsgBuilder inview  ) 

Definition at line 58 of file StreamerOutputFile.cc.

References InitMsgBuilder::startAddress().

Referenced by write().

00059   {
00060     InitMsgView tmpView(inview.startAddress());
00061     return write(tmpView);
00062   }

uint32 StreamerOutputFile::writeEOF ( uint32  statusCode,
const std::vector< uint32 > &  hltStats 
)

Definition at line 94 of file StreamerOutputFile.cc.

References lat::endl(), outputToXml::eof, OutputFile::events(), Exception, OutputFile::fileName(), OutputFile::first_event_offset(), OutputFile::last_event_offset(), OutputFile::run(), streamerfile_, and OutputFile::write().

00096   {
00097     EOFRecordBuilder eof(streamerfile_->run(), 
00098                          streamerfile_->events(),
00099                          statusCode,
00100                          hltStats,
00101                          streamerfile_->first_event_offset(),
00102                          streamerfile_->last_event_offset());
00103 
00104     bool ret = streamerfile_->write((const char*) 
00105                                     eof.recAddress(), 
00106                                     eof.size());  
00107     if (ret) {
00108       throw cms::Exception("OutputFile", "writeEOF")
00109         << "Error writing streamer end-of-file to "
00110         << streamerfile_->fileName() << ".  Possibly the output disk "
00111         << "is full?" << std::endl;
00112     }
00113     return eof.size();  
00114   }

void StreamerOutputFile::writeEventHeader ( const EventMsgView ineview  )  [private]

Definition at line 45 of file StreamerOutputFile.cc.

References lat::endl(), Exception, OutputFile::fileName(), EventMsgView::headerSize(), EventMsgView::startAddress(), streamerfile_, and OutputFile::write().

Referenced by write().

00046   {
00047     bool ret = streamerfile_->write((const char*)
00048                          ineview.startAddress(),
00049                          ineview.headerSize()) ;
00050     if (ret) {
00051       throw cms::Exception("OutputFile", "writeEventHeader")
00052         << "Error writing streamer event data to "
00053         << streamerfile_->fileName() << ".  Possibly the output disk "
00054         << "is full?" << std::endl;
00055     }
00056   }

void StreamerOutputFile::writeStart ( const InitMsgView inview  )  [private]

Definition at line 80 of file StreamerOutputFile.cc.

References lat::endl(), Exception, OutputFile::fileName(), InitMsgView::headerSize(), InitMsgView::run(), OutputFile::set_run(), InitMsgView::startAddress(), streamerfile_, and OutputFile::write().

Referenced by write().

00081   {
00082     bool ret = streamerfile_->write((const char*)
00083                                     inview.startAddress(),
00084                                     inview.headerSize()) ;
00085     if (ret) {
00086       throw cms::Exception("OutputFile", "writeStart")
00087         << "Error writing streamer header data to "
00088         << streamerfile_->fileName() << ".  Possibly the output disk "
00089         << "is full?" << std::endl;
00090     }
00091     streamerfile_->set_run(inview.run()); 
00092   }


Member Data Documentation

OutputFile* StreamerOutputFile::streamerfile_ [private]

Definition at line 59 of file StreamerOutputFile.h.

Referenced by adler32(), StreamerOutputFile(), write(), writeEOF(), writeEventHeader(), writeStart(), and ~StreamerOutputFile().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:55 2009 for CMSSW by  doxygen 1.5.4