CMS 3D CMS Logo

StreamerFileReader.cc

Go to the documentation of this file.
00001 #include "IOPool/Streamer/interface/MsgTools.h"
00002 #include "IOPool/Streamer/src/StreamerFileReader.h"
00003 #include "FWCore/Utilities/interface/Exception.h"
00004 #include "FWCore/Utilities/interface/EDMException.h"
00005 #include "FWCore/Catalog/interface/InputFileCatalog.h"
00006 
00007 using namespace edm;
00008 
00009 namespace edm
00010 {  
00011   StreamerFileReader::StreamerFileReader(edm::ParameterSet const& pset):
00012     streamerNames_(pset.getUntrackedParameter<std::vector<std::string> >("fileNames"))
00013   {
00014       PoolCatalog poolcat;
00015       InputFileCatalog catalog(pset, poolcat);
00016       streamerNames_ = catalog.fileNames();
00017 
00018       if (streamerNames_.size() > 1)
00019           stream_reader_ = std::auto_ptr<StreamerInputFile> 
00020                           (new StreamerInputFile(streamerNames_));
00021       else if (streamerNames_.size() == 1) 
00022            stream_reader_ = std::auto_ptr<StreamerInputFile>
00023                           (new StreamerInputFile(streamerNames_.at(0)));
00024       else {
00025            throw edm::Exception(errors::FileReadError, "StreamerFileReader::StreamerFileReader")
00026               << " Not provided fileNames \n";
00027       }
00028   }
00029 
00030   StreamerFileReader::~StreamerFileReader()
00031   {
00032   }
00033 
00034   const bool StreamerFileReader::newHeader() {
00035        return stream_reader_->newHeader();
00036   }
00037 
00038   const InitMsgView* StreamerFileReader::getHeader()
00039   {
00040  
00041     const InitMsgView* header = stream_reader_->startMessage();
00042   
00043     if(header->code() != Header::INIT) //INIT Msg
00044       throw edm::Exception(errors::FileReadError, "StreamerFileReader::readHeader")
00045         << "received wrong message type: expected INIT, got "
00046         << header->code() << "\n";
00047 
00048    return header;
00049   }
00050 
00051  const EventMsgView* StreamerFileReader::getNextEvent()
00052  {
00053     if (!stream_reader_->next() )
00054     {
00055         return 0;
00056     }
00057     return stream_reader_->currentRecord();
00058  } 
00059 
00060 } //end-of-namespace
00061 
00062 

Generated on Tue Jun 9 17:39:18 2009 for CMSSW by  doxygen 1.5.4