Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-31 04:19:06

0001 #ifndef CalibCalorimetry_EcalLaserSorting_WatcherStreamFileReader_h
0002 #define CalibCalorimetry_EcalLaserSorting_WatcherStreamFileReader_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::streamer {
0023   class StreamerInputFile;
0024 }
0025 
0026 class WatcherStreamFileReader {
0027 public:
0028   WatcherStreamFileReader(edm::ParameterSet const& pset);
0029   ~WatcherStreamFileReader();
0030 
0031   const edm::streamer::InitMsgView* getHeader();
0032   const edm::streamer::EventMsgView* getNextEvent();
0033   const bool newHeader();
0034 
0035   edm::streamer::StreamerInputFile* getInputFile();
0036 
0037   void closeFile();
0038 
0039 private:
0040   void moveJustReadFile();
0041   /** Directory to look for streamer files
0042    */
0043   std::string inputDir_;
0044 
0045   /** Streamer file name pattern list
0046    */
0047   std::vector<std::string> filePatterns_;
0048 
0049   /** Directory where file are moved during processing
0050    */
0051   std::string inprocessDir_;
0052 
0053   /** Directory where file must be moved once processed
0054    */
0055   std::string processedDir_;
0056 
0057   /** Directory where file must be moved if file is unreadble (e.g empty size)
0058    */
0059   std::string corruptedDir_;
0060 
0061   /** Cached input file stream
0062    */
0063   std::unique_ptr<edm::streamer::StreamerInputFile> streamerInputFile_;
0064 
0065   std::string fileName_;
0066 
0067   std::string tokenFile_;
0068 
0069   int timeOut_;
0070 
0071   std::deque<std::string> filesInQueue_;
0072 
0073   bool end_;
0074 
0075   int verbosity_;
0076 };
0077 
0078 #endif