00001 #ifndef STAR_STCLOSEFILEONTERMINATE 00002 #define STAR_STCLOSEFILEONTERMINATE 00003 // $Id: StCloseFileOnTerminate.h,v 1.7 2011/06/20 22:36:48 fisyak Exp $ 00004 00005 #include "TSysEvtHandler.h" 00006 00009 class StNotifyOnTerminate; 00017 class StTerminateNotified { 00018 private: 00019 StNotifyOnTerminate *fTerminateHandler; 00020 public: 00021 StTerminateNotified(); 00022 virtual ~StTerminateNotified(); 00023 virtual void SetNotifiedCallBack() = 0; 00024 }; 00025 00033 class StCloseFileOnTerminate : public TSignalHandler { 00034 private: 00035 static StCloseFileOnTerminate *fgCloseFileOnTerminate; 00036 protected: 00037 // ! singleton ctor 00038 StCloseFileOnTerminate(); 00040 public: 00041 static StCloseFileOnTerminate &Instantiate(); 00042 protected: 00043 static bool Exists() {return fgCloseFileOnTerminate;} 00045 virtual Bool_t Notify(); 00046 ClassDef(StCloseFileOnTerminate,0) 00047 }; 00048 00049 class StNotifyOnTerminate : public StCloseFileOnTerminate { 00050 friend class StTerminateNotified; 00051 private: 00052 StTerminateNotified &fNotificator; 00053 protected: 00054 StNotifyOnTerminate(StTerminateNotified ¬ificator):StCloseFileOnTerminate(),fNotificator(notificator) 00055 {} 00056 public: 00058 virtual Bool_t Notify(); 00059 StTerminateNotified &Notificator() const { return fNotificator; } 00060 ClassDef(StNotifyOnTerminate,0) 00061 }; 00062 00063 #endif 00064
1.5.9