Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TProofLite.h
Go to the documentation of this file.
1 // @(#)root/proof:$Id$
2 // Author: G. Ganis March 2008
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TProofLite
13 #define ROOT_TProofLite
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TProofLite //
19 // //
20 // This class starts a PROOF session on the local machine: no daemons, //
21 // client and master merged, communications via UNIX-like sockets. //
22 // By default the number of workers started is NumberOfCores+1; a //
23 // different number can be forced on construction. //
24 // //
25 //////////////////////////////////////////////////////////////////////////
26 
27 #include "TProof.h"
28 
29 class TDSet;
30 class TList;
31 class TQueryResultManager;
32 class TDataSetManager;
33 class TProofLockPath;
34 class TProofMgr;
35 class TProofQueryResult;
36 class TServerSocket;
37 class TSelector;
38 class TPMERegexp;
39 
40 class TProofLite : public TProof {
41 
42 friend class TProofPlayerLite;
43 
44 private:
45  Int_t fNWorkers; // Number of workers
46  TString fSandbox; // PROOF sandbox root dir
47  TString fCacheDir; // Directory containing cache of user files
48  TString fQueryDir; // Directory containing query results and status
49  TString fDataSetDir; // Directory containing info about known data sets
50  TString fSockPath; // UNIX socket path for communication with workers
51  TServerSocket *fServSock; // Server socket to accept call backs
52  Bool_t fForkStartup; // Startup N-1 workers forking the first worker
53 
54  Int_t fDynamicStartupStep; // Dyn Startup simulation: increment at each call
55  Int_t fDynamicStartupNMax; // Dyn Startup simulation: max number of workers
56 
57  TString fVarExp; // Internal variable to pass drawing options
58  TString fSelection; // Internal variable to pass drawing options
59 
60  TProofLockPath *fCacheLock; // Cache dir locker
61  TProofLockPath *fQueryLock; // Query dir locker
62  TQueryResultManager *fQMgr; // Query-result manager
63 
64  TDataSetManager *fDataSetManager; // Dataset manager
65  TDataSetManagerFile *fDataSetStgRepo; // Dataset manager for staging requests
66 
67  TPMERegexp *fReInvalid; // Regular expression matching invalid dataset URIs
68 
69  static Int_t fgWrksMax; // Max number of workers
70 
71  TProofLite(const TProofLite &); // not implemented
72  void operator=(const TProofLite &); // idem
73 
74  Int_t CleanupSandbox();
75  Int_t CreateSandbox();
76  void FindUniqueSlaves();
77  void NotifyStartUp(const char *action, Int_t done, Int_t tot);
78  Int_t SetProofServEnv(const char *ord);
79  Int_t InitDataSetManager();
80 
81  void ResolveKeywords(TString &s, const char *ord, const char *logfile);
82 
83  void SendInputDataFile();
84  void ShowDataDir(const char *dirname);
85 
86 protected:
87  TProofLite() : TProof() { } // For derived classes to use
88 
89  Int_t Init(const char *masterurl, const char *conffile,
90  const char *confdir, Int_t loglevel,
91  const char *alias = 0);
92  TProofQueryResult *MakeQueryResult(Long64_t nent, const char *opt,
93  Long64_t fst, TDSet *dset,
94  const char *selec);
95  void SetQueryRunning(TProofQueryResult *pq);
96  Int_t SetupWorkers(Int_t opt = 0, TList *wrks = 0);
97  Int_t CopyMacroToCache(const char *macro, Int_t headerRequired = 0,
98  TSelector **selector = 0, Int_t opt = 0, TList *wrks = 0);
99 
100  Int_t PollForNewWorkers();
101 
102 public:
103  TProofLite(const char *masterurl, const char *conffile = kPROOF_ConfFile,
104  const char *confdir = kPROOF_ConfDir, Int_t loglevel = 0,
105  const char *alias = 0, TProofMgr *mgr = 0);
106  virtual ~TProofLite();
107 
108  void Print(Option_t *option="") const;
109 
110  Long64_t DrawSelect(TDSet *dset, const char *varexp,
111  const char *selection = "",
112  Option_t *option = "", Long64_t nentries = -1,
113  Long64_t firstentry = 0);
114  Long64_t Process(TDSet *dset, const char *sel, Option_t *o = "",
115  Long64_t nent = -1, Long64_t fst = 0);
116  Long64_t Process(TFileCollection *fc, const char *sel, Option_t *o = "",
117  Long64_t nent = -1, Long64_t fst = 0)
118  { return TProof::Process(fc, sel, o, nent, fst); }
119  Long64_t Process(const char *dsname, const char *sel, Option_t *o = "",
120  Long64_t nent = -1, Long64_t fst = 0, TObject *enl = 0)
121  { return TProof::Process(dsname, sel, o, nent, fst, enl); }
122  Long64_t Process(const char *sel, Long64_t nent, Option_t *o = "")
123  { return TProof::Process(sel, nent, o); }
124  // Process via TSelector
125  Long64_t Process(TDSet *dset, TSelector *sel, Option_t *o = "",
126  Long64_t nent = -1, Long64_t fst = 0)
127  { return TProof::Process(dset, sel, o, nent, fst); }
128  Long64_t Process(TFileCollection *fc, TSelector *sel, Option_t *o = "",
129  Long64_t nent = -1, Long64_t fst = 0)
130  { return TProof::Process(fc, sel, o, nent, fst); }
131  Long64_t Process(const char *dsname, TSelector *sel, Option_t *o = "",
132  Long64_t nent = -1, Long64_t fst = 0, TObject *enl = 0)
133  { return TProof::Process(dsname, sel, o, nent, fst, enl); }
134  Long64_t Process(TSelector* sel, Long64_t nent, Option_t *o = "")
135  { return TProof::Process(sel, nent, o); }
136 
137  // Cache management
138  void ShowCache(Bool_t all = kFALSE);
139  void ClearCache(const char *file = 0);
140  Int_t Load(const char *macro, Bool_t notOnClient = kFALSE, Bool_t uniqueOnly = kTRUE,
141  TList *wrks = 0);
142 
143  // Data management
144  void ShowData();
145 
146  // Query management
147  TList *GetListOfQueries(Option_t *opt = "");
148  Int_t Remove(const char *ref, Bool_t all);
149 
150  // Dataset handling
151  Bool_t RegisterDataSet(const char *dsName, TFileCollection *ds, const char *opt = "");
152  Bool_t ExistsDataSet(const char *uri);
153  TMap *GetDataSets(const char *uri = "", const char * = 0);
154  void ShowDataSets(const char *uri = "", const char * = 0);
155  TFileCollection *GetDataSet(const char *uri, const char * = 0);
156  Int_t RemoveDataSet(const char *uri, const char * = 0);
157  Bool_t RequestStagingDataSet(const char *dataset);
158  Bool_t CancelStagingDataSet(const char *dataset);
159  TFileCollection *GetStagingStatusDataSet(const char *dataset);
160  Int_t VerifyDataSet(const char *uri, const char * = 0);
161  Int_t SetDataSetTreeName( const char *dataset, const char *treename);
162  void ShowDataSetCache(const char *dataset = 0);
163  void ClearDataSetCache(const char *dataset = 0);
164 
165  // Browsing
166  TTree *GetTreeHeader(TDSet *tdset);
167 
168  static Int_t GetNumberOfWorkers(const char *url = 0);
169 
170  ClassDef(TProofLite,0) //PROOF-Lite control class
171 };
172 
173 #endif