Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TGo4Display.h"
00015
00016 #include "TGo4Log.h"
00017 #include "TGo4ThreadHandler.h"
00018 #include "TGo4Task.h"
00019 #include "TGo4TaskManager.h"
00020 #include "TGo4DisplayDrawerTimer.h"
00021 #include "TGo4DisplayLoggerTimer.h"
00022 #include "TGo4Status.h"
00023
00024 #include "TGo4AnalysisProxy.h"
00025 #include "TGo4Slot.h"
00026
00027
00028 TGo4Display::TGo4Display(Bool_t isserver)
00029 : TGo4Master("Display",
00030 isserver,
00031 "dummy",
00032 1),
00033 fxAnalysis(0)
00034 {
00035
00036 fxDrawTimer= new TGo4DisplayDrawerTimer(this, 30);
00037 fxLogTimer= new TGo4DisplayLoggerTimer(this, 500);
00038 fxDrawTimer->TurnOn();
00039 fxLogTimer->TurnOn();
00040
00041
00042 GetTask()->Launch();
00043 }
00044
00045
00046 TGo4Display::~TGo4Display()
00047 {
00048 GO4TRACE((15,"TGo4Display::~TGo4Display()", __LINE__, __FILE__));
00049
00050 if(GetTask())
00051 GetTask()->GetWorkHandler()->CancelAll();
00052 delete fxDrawTimer;
00053 delete fxLogTimer;
00054 if (fxAnalysis != 0) {
00055 fxAnalysis->DisplayDeleted(this);
00056 TGo4Slot* pslot = fxAnalysis->ParentSlot();
00057 if (pslot) {
00058
00059 pslot->Delete();
00060 } else {
00061
00062 delete fxAnalysis;
00063 }
00064
00065 }
00066 TGo4Log::Info("------- TGO4DISPLAY DESTRUCTOR FINISHED. ------");
00067 }
00068
00069 void TGo4Display::DisplayData(TObject* data)
00070 {
00071 if (fxAnalysis!=0)
00072 fxAnalysis->ReceiveObject(dynamic_cast<TNamed*>(data));
00073 else
00074 delete data;
00075 }
00076
00077 void TGo4Display::DisplayLog(TGo4Status * Status)
00078 {
00079 if (fxAnalysis!=0)
00080 fxAnalysis->ReceiveStatus(Status);
00081 else
00082 delete Status;
00083 }
00084
00085 Bool_t TGo4Display::DisconnectSlave(const char* name, Bool_t waitforslave)
00086 {
00087
00088
00089
00090
00091
00092
00093
00095
00096
00097
00098 Bool_t rev=TGo4Master::DisconnectSlave(name,waitforslave);
00099
00100
00101 if(rev)
00102 {
00103 if (fxAnalysis!=0)
00104
00105 fxAnalysis->DisplayDisconnected(this);
00106
00107
00108
00109 }
00110 else
00111 {
00112
00113
00114 }
00115
00116 return rev;
00117 }
00118