Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TGo4Slave.h"
00015
00016 #include "TROOT.h"
00017 #include "snprintf.h"
00018
00019 #include "TGo4Log.h"
00020 #include "TGo4TaskStatus.h"
00021 #include "TGo4ServerTask.h"
00022 #include "TGo4ClientTask.h"
00023 #include "TGo4CommandInvoker.h"
00024 #include "TGo4TaskHandlerCommandList.h"
00025
00026 TGo4Slave::TGo4Slave(const char* name, Bool_t isserver, const char* serverhost, UInt_t negotport) :
00027 TGo4TaskOwner(isserver),
00028 fbMainIsRunning(kTRUE)
00029 {
00030 TGo4CommandInvoker::Instance();
00031 TGo4CommandInvoker::SetCommandList(new TGo4TaskHandlerCommandList("ListOfTaskHandlerCommands"));
00032 TGo4CommandInvoker::Register("SlaveTask", this);
00033 TGo4Task* task=0;
00034 if(IsServer())
00035 {
00036 task=new TGo4ServerTask(name, negotport,
00037 kFALSE,
00038 kFALSE,
00039 kTRUE,
00040 kTRUE,
00041 kFALSE
00042 );
00043 }
00044 else
00045 {
00046 task=new TGo4ClientTask(name, serverhost, negotport,
00047 kFALSE,
00048 kFALSE,
00049 kFALSE,
00050 kTRUE,
00051 kFALSE,
00052 kTRUE );
00053 }
00054 SetTask(task);
00055 }
00056
00057 TGo4Slave::TGo4Slave() : fbMainIsRunning(kTRUE)
00058 {
00059 }
00060
00061 TGo4Slave::~TGo4Slave()
00062 {
00063 TGo4CommandInvoker::UnRegister(this);
00064 }
00065
00066
00067 void TGo4Slave::Start()
00068 {
00069 TGo4Log::Debug(" Slave ''%s'' default Start method, please override",GetName());
00070 fbMainIsRunning = kTRUE;
00071 }
00072
00073
00074 void TGo4Slave::Stop()
00075 {
00076 TGo4Log::Debug(" Slave ''%s'' default Stop method, please override",GetName());
00077 fbMainIsRunning = kFALSE;
00078 }
00079
00080 void TGo4Slave::KillMain()
00081 {
00082
00083
00084 }
00085 void TGo4Slave::RestartMain()
00086 {
00087
00088 }
00089
00090 void TGo4Slave::Terminate (Bool_t termapp)
00091 {
00092 if(GetTask())
00093 GetTask()->TGo4ThreadManager::Terminate(termapp);
00094 }
00095
00096 void TGo4Slave::TerminateFast ()
00097 {
00098 Terminate();
00099 }
00100
00101
00102 TGo4TaskStatus* TGo4Slave::CreateStatus()
00103 {
00104 TGo4TaskStatus* stat= new TGo4TaskStatus(GetName());
00105 UpdateStatus(stat);
00106 return stat;
00107 }
00108
00109 void TGo4Slave::UpdateStatus(TGo4TaskStatus* state)
00110 {
00111 if(GetTask())
00112 GetTask()->UpdateStatus(state);
00113 }
00114
00115 TGo4Command* TGo4Slave::NextCommand()
00116 {
00117 return GetTask() ? GetTask()->NextCommand() : 0;
00118 }
00119
00120 void TGo4Slave::SendObject(TObject * obj, const char* receiver)
00121 {
00122 if(GetTask())
00123 GetTask()->SendObject(obj, receiver);
00124 }
00125
00126 void TGo4Slave::SendStatus(TGo4Status * stat, const char* receiver)
00127 {
00128 if(GetTask())
00129 GetTask()->SendStatus(stat, receiver);
00130 }
00131
00132 Int_t TGo4Slave::Initialization()
00133 {
00134
00135 return 0;
00136 }
00137
00138 TGo4ThreadHandler* TGo4Slave::GetThreadHandler()
00139 {
00140 return GetTask() ? GetTask()->GetWorkHandler() : 0;
00141 }
00142
00143
00144 void TGo4Slave::SendStatusBuffer()
00145 {
00146 if(GetTask()) GetTask()->SendStatusBuffer();
00147 }
00148
00149
00150 void TGo4Slave::SendStatusMessage(Int_t level, Bool_t printout, const TString& text)
00151 {
00152 if(GetTask())
00153 GetTask()->SendStatusMessage(level, printout, text.Data());
00154 }
00155
00156
00157 void TGo4Slave::UpdateStatusBuffer()
00158 {
00159 if(GetTask()) GetTask()->UpdateStatusBuffer();
00160 }
00161
00162 void TGo4Slave::ExecuteString(const char* command)
00163 {
00164 gROOT->ProcessLineSync(command);
00165 }
00166