Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TPackMgr.h
Go to the documentation of this file.
1 // @(#)root/proof:$Id$
2 // Author: G. Ganis, Oct 2011
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, 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_TPackMgr
13 #define ROOT_TPackMgr
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TPackMgr //
19 // //
20 // The PROOF manager interacts with the PROOF server coordinator to //
21 // create or destroy a PROOF session, attach to or detach from //
22 // existing one, and to monitor any client activity on the cluster. //
23 // At most one manager instance per server is allowed. //
24 // //
25 //////////////////////////////////////////////////////////////////////////
26 
27 #include "TLockPath.h"
28 #include "TNamed.h"
29 #include "TMD5.h"
30 #include "TList.h"
31 #include "TString.h"
32 
33 typedef void (*TPackMgrLog_t)(const char *);
34 
35 class TList;
36 class THashList;
37 class TPackMgr : public TNamed {
38 public:
39  enum ECheckVersionOpt { kDontCheck = 0, kCheckROOT = 1, kCheckGIT = 2};
40 
41 private:
42  TPackMgrLog_t fLogger; // Logger
43  TString fName; // Key identifying this package manager
44  TString fDir; // Directory with packages
45  TLockPath fLock; // Locker
46  TString fPfx; // Prefix for notifications, if any
47  TList *fEnabledPackages; // List of packages enabled
48 
49  static THashList *fgGlobalPackMgrList; // list of package managers for global packages
50 
51 private:
52  TPackMgr(const TPackMgr&); // Not implemented
53  TPackMgr& operator=(const TPackMgr&); // Not implemented
54 
55  void Log(const char *msg);
56 
57 public:
58  TPackMgr(const char *dir, const char *key = "L0");
59  virtual ~TPackMgr();
60 
61  const char *GetName() const { return fName.Data(); }
62  void SetName(const char *name) { fName = name; }
63  const char *GetTitle() const { return GetDir(); }
64 
65  TLockPath *GetLock() { return &fLock; }
66 
67  void SetLogger(TPackMgrLog_t logger) { fLogger = logger; }
68  void SetPrefix(const char *pfx) { fPfx = pfx; }
69 
70  Int_t Build(const char *pack, Int_t opt = TPackMgr::kCheckROOT);
71  Int_t Load(const char *pack, TList *optls = 0);
72  Int_t Load(const char *pack, const char *opts);
73  Int_t Unload(const char *pack);
74 
75  Bool_t Has(const char *pack);
76  Bool_t IsInDir(const char *path);
77  const char *GetDir() const { return fDir.Data(); }
78  Int_t GetPackDir(const char *pack, TString &pdir);
79  Int_t GetParPath(const char *pack, TString &path);
80  Int_t GetDownloadDir(TString &dldir);
81  void GetEnabledPackages(TString &packlist);
82  Bool_t IsPackageEnabled(const char *pack) {
83  return (fEnabledPackages &&
84  fEnabledPackages->FindObject(pack) ? kTRUE : kFALSE); }
85 
86  void Show(const char *title = 0);
87  Int_t Clean(const char *pack);
88  Int_t Remove(const char *pack = 0, Bool_t dolock = kTRUE);
89  TList *GetList() const;
90 
91  void ShowEnabled(const char *title = 0);
92  TList* GetListOfEnabled() const;
93 
94  TMD5 *GetMD5(const char *pack);
95  TMD5 *ReadMD5(const char *pack);
96 
97  Int_t Install(const char *par, Bool_t rmold = kFALSE);
98  Int_t Unpack(const char *pack, TMD5 *sum = 0);
99 
100  // Static methods
101  static TPackMgr *GetPackMgr(const char *pack, TPackMgr *packmgr = nullptr);
102  static Int_t RegisterGlobalPath(const char *paths);
103  static Int_t FindParPath(TPackMgr *packmgr, const char *pack, TString &par);
104  static Bool_t IsEnabled(const char *pack, TPackMgr *packmgr = nullptr);
105 
106  ClassDef(TPackMgr,0) // Package manager interface
107 };
108 
109 #endif