00001 00002 // $Id: IoOutputModule.h,v 1.12 2005/11/29 01:33:19 schubert Exp $ 00003 // 00004 // messier@huhepl.harvard.edu 00006 #ifndef IOOUTPUTMODULE_H 00007 #define IOOUTPUTMODULE_H 00008 #ifndef STRING 00009 #include <string> 00010 #endif 00011 #ifndef VECTOR 00012 #include <vector> 00013 #endif 00014 #ifndef PER_H 00015 #include "Persistency/Per.h" // For EAccessMode 00016 #endif 00017 #ifndef JOBCMODULE_H 00018 #include "JobControl/JobCModule.h" 00019 #endif 00020 00021 class MomNavigator; 00022 class JobCommand; 00023 class PerOutputStreamManager; 00024 class Registry; 00025 00026 class IoOutputModule : public JobCModule 00027 { 00028 public: 00029 IoOutputModule(); 00030 ~IoOutputModule(); 00031 00032 const Registry& DefaultConfig() const; 00033 00034 void BeginJob(); 00035 void Config(const Registry& r); 00036 void EndJob(); 00037 JobCResult Put(const MomNavigator* mom); 00038 00039 // Soon to be obsolete 00040 void HandleCommand(JobCommand* cmd); 00041 00042 bool OpenFile(); 00043 bool CloseFile(); 00044 int AddStreams(std::string streamList); 00045 int DefineStream(std::string streamName,std::string className, 00046 std::string userName="", std::string inputStreamName="", 00047 Int_t splitlevel=Per::kRecSplit); 00048 int SetStreams(std::string streamList); 00049 int RemoveStreams(std::string streamList); 00050 00051 private: 00052 int AttachAssociatedStreams(); 00053 int EnableStreamList(); 00054 00055 PerOutputStreamManager* fOutputStreamManager; 00056 int fAutoSaveInt; // Save trees at this entry interval 00057 int fAutoSaveTime; // Save trees at this time interval 00058 int fAutoSaveBytes; // Save trees at this byte interval 00059 std::string fFileName; // Output file name 00060 std::string fDefaultFileName; // Default output file name 00061 Per::EAccessMode fAccessMode; // Output access mode 00062 std::vector<std::string> fStreamList; // list of enabled output streams 00063 bool fOutputFileOpen; // Is the output file open? 00064 00065 }; 00066 00067 #endif // IOOUTPUTMODULE_H 00068
1.3.9.1