Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:33:37

0001 #ifndef IOPool_Streamer_StreamerFileReader_h
0002 #define IOPool_Streamer_StreamerFileReader_h
0003 
0004 #include "IOPool/Streamer/interface/InitMessage.h"
0005 #include "IOPool/Streamer/interface/EventMessage.h"
0006 
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 
0009 #include <string>
0010 #include <iostream>
0011 #include <deque>
0012 
0013 /** This module is an source module reading continously file 
0014  * as they are copied in the input directory.
0015  * The processed file is moved to directoryt inprocessDir before being
0016  * processed. Once it is processed it is moved to processedDir.
0017  * To prevent processing files before their transfer is finished, it is waited
0018  * than file size is stable during one second before the file is processed. 
0019  * This protection is obviously not full proof, especially to transfer lag.
0020  */
0021 
0022 namespace edm {
0023   class StreamerInputFile;
0024 }
0025 
0026 class WatcherStreamFileReader {
0027 public:
0028   WatcherStreamFileReader(edm::ParameterSet const& pset);
0029   ~WatcherStreamFileReader();
0030 
0031   const InitMsgView* getHeader();
0032   const EventMsgView* getNextEvent();
0033   const bool newHeader();
0034 
0035   edm::StreamerInputFile* getInputFile();
0036 
0037   void closeFile();
0038 
0039 private:
0040   /** Directory to look for streamer files
0041    */
0042   std::string inputDir_;
0043 
0044   /** Streamer file name pattern list
0045    */
0046   std::vector<std::string> filePatterns_;
0047 
0048   /** Directory where file are moved during processing
0049    */
0050   std::string inprocessDir_;
0051 
0052   /** Directory where file must be moved once processed
0053    */
0054   std::string processedDir_;
0055 
0056   /** Directory where file must be moved if file is unreadble (e.g empty size)
0057    */
0058   std::string corruptedDir_;
0059 
0060   /** Cached input file stream
0061    */
0062   std::unique_ptr<edm::StreamerInputFile> streamerInputFile_;
0063 
0064   std::string fileName_;
0065 
0066   std::string tokenFile_;
0067 
0068   int timeOut_;
0069 
0070   std::deque<std::string> filesInQueue_;
0071 
0072   bool end_;
0073 
0074   int verbosity_;
0075 };
0076 
0077 #endif