1 #ifndef ALI_SHUTTLE_TRIGGER_H
2 #define ALI_SHUTTLE_TRIGGER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 // This class is to deal with DAQ LogBook and DAQ end run notification.
11 // It executes AliShuttle for retrieval of conditions data.
12 // For more info see AliShuttleTrigger.cxx
16 #include <TSysEvtHandler.h>
18 #include <TCondition.h>
23 class AliShuttleConfig;
25 class AliShuttleTrigger;
28 class TerminateSignalHandler: public TSignalHandler {
31 TerminateSignalHandler(): TSignalHandler((ESignals) 0,0), fTrigger(0) { }
32 TerminateSignalHandler(AliShuttleTrigger* trigger, ESignals signal):
33 TSignalHandler(signal, kFALSE), fTrigger(trigger) {}
35 virtual ~TerminateSignalHandler() { }
36 virtual Bool_t Notify();
40 TerminateSignalHandler(const TerminateSignalHandler& other);
41 TerminateSignalHandler& operator= (const TerminateSignalHandler& other);
43 AliShuttleTrigger* fTrigger; // pointer to the current AliShuttleTrigger
45 ClassDef(TerminateSignalHandler, 0)
48 class AliShuttleTrigger: public TObject {
50 AliShuttleTrigger(const AliShuttleConfig* config, UInt_t timeout = 5000, Int_t retries = 5);
53 AliShuttle* GetShuttle() {return fShuttle;}
55 Bool_t Collect(Int_t run);
59 Bool_t SetNewLastRun(Int_t run);
61 virtual Bool_t Notify();
68 AliShuttleTrigger(const AliShuttleTrigger& other);
69 AliShuttleTrigger& operator= (const AliShuttleTrigger& other);
71 class AliShuttleTriggerDATEEntry: public TObject {
73 AliShuttleTriggerDATEEntry(Int_t run, UInt_t startTime, UInt_t endTime):
74 fRun(run), fStartTime(startTime), fEndTime(endTime) {}
76 Int_t GetRun() const {return fRun;}
77 UInt_t GetStartTime() const {return fStartTime;}
78 UInt_t GetEndTime() const {return fEndTime;}
81 Int_t fRun; // Run number
82 UInt_t fStartTime; // Run start time
83 UInt_t fEndTime; // Run end time
84 ClassDef(AliShuttleTriggerDATEEntry, 0)
87 Bool_t RetrieveDATEEntries(const char* whereClause, TObjArray& entries);
88 Bool_t RetrieveConditionsData(const TObjArray& dateEntries, Bool_t updateLastRun);
91 Bool_t WriteLastRun();
93 const AliShuttleConfig* fConfig;
94 //AliCDBStorage* fLocalStorage;
96 AliShuttle* fShuttle; // Pointer to the actual Shuttle instance
98 Bool_t fNotified; // Notified flag
99 Bool_t fTerminate; // Terminate flag
101 Int_t fLastRun; // last sucessfully processed run
103 TMutex fMutex; // Mutex
104 TCondition fCondition; // Condition
106 TerminateSignalHandler fQuitSignalHandler; // Quit signal
107 TerminateSignalHandler fInterruptSignalHandler; // Interrupt signal
110 ClassDef(AliShuttleTrigger, 0)