38 typedef Int_t (*OldSlaveAuthSetup_t)(TSocket *, Bool_t, TString, TString);
42 typedef TSlave *(*TSlave_t)(
const char *url,
const char *ord, Int_t perf,
43 const char *image, TProof *proof, Int_t stype,
44 const char *workdir,
const char *msd, Int_t nwk);
46 class TSlave :
public TObject {
49 friend class TProofLite;
50 friend class TSlaveLite;
55 enum ESlaveType { kMaster, kSlave };
56 enum ESlaveStatus { kInvalid, kActive, kInactive };
58 kOutputRequested = BIT(15)
63 static TSlave_t fgTXSlaveHook;
65 TSlave(
const TSlave &s) : TObject(s) { }
66 TSlave(
const char *host,
const char *ord, Int_t perf,
67 const char *image, TProof *proof, Int_t stype,
68 const char *workdir,
const char *msd, Int_t = 1);
70 Int_t OldAuthSetup(Bool_t master, TString wconf);
71 void Init(
const char *host, Int_t port, Int_t stype);
72 void operator=(
const TSlave &) { }
74 static TSlave *Create(
const char *url,
const char *ord, Int_t perf,
75 const char *image, TProof *proof, Int_t stype,
76 const char *workdir,
const char *msd, Int_t nwk = 1);
81 TString fProofWorkDir;
95 ESlaveType fSlaveType;
105 virtual void FlushSocket() { }
106 void Init(TSocket *s, Int_t stype);
107 virtual void Interrupt(Int_t type);
108 virtual Int_t Ping();
109 virtual TObjString *SendCoordinator(Int_t kind,
const char *msg = 0, Int_t int2 = 0);
110 virtual Int_t SendGroupPriority(
const char * , Int_t ) {
return 0; }
111 virtual void SetAlias(
const char *alias);
112 void SetSocket(TSocket *s) { fSocket = s; }
113 virtual void SetStatus(Int_t st) { fStatus = st; }
114 virtual void StopProcess(Bool_t abort, Int_t timeout);
119 virtual void Close(Option_t *opt =
"");
121 Int_t Compare(
const TObject *obj)
const;
122 Bool_t IsSortable()
const {
return kTRUE; }
124 const char *GetName()
const {
return fName; }
125 const char *GetImage()
const {
return fImage; }
126 const char *GetProofWorkDir()
const {
return fProofWorkDir; }
127 const char *GetWorkDir()
const {
return fWorkDir; }
128 const char *GetUser()
const {
return fUser; }
129 const char *GetGroup()
const {
return fGroup; }
130 Int_t GetPort()
const {
return fPort; }
131 const char *GetOrdinal()
const {
return fOrdinal; }
132 Int_t GetPerfIdx()
const {
return fPerfIdx; }
133 Int_t GetProtocol()
const {
return fProtocol; }
134 TSocket *GetSocket()
const {
return fSocket; }
135 TProof *GetProof()
const {
return fProof; }
136 Long64_t GetBytesRead()
const {
return fBytesRead; }
137 Float_t GetRealTime()
const {
return fRealTime; }
138 Float_t GetCpuTime()
const {
return fCpuTime; }
139 Int_t GetSlaveType()
const {
return (Int_t)fSlaveType; }
140 Int_t GetStatus()
const {
return fStatus; }
141 Int_t GetParallel()
const {
return fParallel; }
142 const char *GetMsd()
const {
return fMsd; }
143 const char *GetSessionTag()
const {
return fSessionTag; }
144 TFileHandler *GetInputHandler()
const {
return fInput; }
145 void SetInputHandler(TFileHandler *ih);
147 const char *GetArchCompiler()
const {
return fArchComp; }
148 const char *GetROOTVersion()
const {
return fROOTVers; }
150 virtual Bool_t IsValid()
const {
return fSocket ? kTRUE : kFALSE; }
152 virtual void Print(Option_t *option=
"")
const;
154 virtual Int_t SetupServ(Int_t stype,
const char *conffile);
156 virtual void SetInterruptHandler(Bool_t ) { }
158 void SetArchCompiler(
const char *ac) { fArchComp = ac; }
159 void SetROOTVersion(
const char *rv) { fROOTVers = rv; }
161 void SetSessionTag(
const char *st) { fSessionTag = st; }
163 static void SetTXSlaveHook(TSlave_t xslavehook);
165 virtual void Touch() { }