]> git.uio.no Git - u/mrichter/AliRoot.git/blob - SHUTTLE/AliShuttleTrigger.h
Run type field added in SHUTTLE framework. Run type is read from "run type" logbook...
[u/mrichter/AliRoot.git] / SHUTTLE / AliShuttleTrigger.h
1 #ifndef ALI_SHUTTLE_TRIGGER_H
2 #define ALI_SHUTTLE_TRIGGER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //
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
13 //
14
15 #include <TObject.h>
16 #include <TSysEvtHandler.h>
17 #include <TMutex.h>
18 #include <TCondition.h>
19
20
21 class AliShuttle;
22 class AliShuttleConfig;
23
24 class AliShuttleTrigger;
25 class DATENotifier;
26
27 class TerminateSignalHandler: public TSignalHandler {
28         
29 public:
30         TerminateSignalHandler(): TSignalHandler((ESignals) 0,0), fTrigger(0) { }
31         TerminateSignalHandler(AliShuttleTrigger* trigger, ESignals signal):
32         TSignalHandler(signal, kFALSE), fTrigger(trigger) {}
33
34         virtual ~TerminateSignalHandler() { }
35         virtual Bool_t Notify();
36
37 private:
38         TerminateSignalHandler(const TerminateSignalHandler& other);
39         TerminateSignalHandler& operator= (const TerminateSignalHandler& other);
40   
41         AliShuttleTrigger* fTrigger;  // pointer to the current AliShuttleTrigger
42
43         ClassDef(TerminateSignalHandler, 0)
44 };
45
46 class AliShuttleTrigger: public TObject {
47
48 public:
49         AliShuttleTrigger(const AliShuttleConfig* config, UInt_t timeout = 5000, Int_t retries = 5);
50         ~AliShuttleTrigger();
51
52         AliShuttle* GetShuttle() {return fShuttle;}
53
54         Bool_t Collect(Int_t run = -1);
55
56         virtual Bool_t Notify();
57         void Terminate();
58
59         void Run();
60
61 private:
62         AliShuttleTrigger(const AliShuttleTrigger& other);
63         AliShuttleTrigger& operator= (const AliShuttleTrigger& other);
64
65         const AliShuttleConfig* fConfig;
66
67         AliShuttle* fShuttle;           // Pointer to the actual Shuttle instance
68
69         Bool_t fNotified;               // Notified flag
70         Bool_t fTerminate;              // Terminate flag
71
72         TMutex fMutex;                  // Mutex
73         TCondition fCondition;          // Condition 
74
75         TerminateSignalHandler* fQuitSignalHandler;             // Quit signal
76         TerminateSignalHandler* fInterruptSignalHandler;        // Interrupt signal
77
78
79         ClassDef(AliShuttleTrigger, 0)
80 };
81
82 #endif