Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TDataSetManagerFile.h
Go to the documentation of this file.
1// @(#)root/proof:$Id$
2// Author: Jan Fiete Grosse-Oetringhaus, 08.08.07
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_TDataSetManagerFile
13#define ROOT_TDataSetManagerFile
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// TDataSetManagerFile //
18// //
19// Implementation of TDataSetManager handling datasets from root //
20// files under a specific directory path //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "TDataSetManager.h"
25
26const char* const kDataSet_LocalCache = "dataset.cache"; // default cache subdirectory
27const char* const kDataSet_DataSetList = "dataset.list"; // file with info about all datasets
28const char* const kDataSet_LockLocation = "lock.location"; // location of the lock file
29
31
32private:
33 TString fDataSetDir; // Location of datasets
34 TString fMSSUrl; // URL for the Mass Storage System
35 TString fStageOpts; // Option string to be used in issuing staging requests
36 TString fDataSetLockFile; // Dataset lock file
37 Int_t fLockFileTimeLimit; // Limit in seconds after a lock automatically expires
38 TString fListFile; // File to check repository updates
39 Bool_t fIsRemote; // True if the repository is remote
40 Bool_t fUseCache; // True if the cache is used for browsing remote repositories
41 TString fLocalCacheDir; // Local cache when the repository is remote
42 Int_t fCacheUpdatePeriod; // Period for checking for new updated information
43 Bool_t fOpenPerms; // True if file permissions must be open
44
45 // Local cache handling
46 void InitLocalCache();
47 Int_t CheckLocalCache(const char *group, const char *user, const char *dsName = "ls", UInt_t option = 0);
48
49protected:
50 const char *GetDataSetPath(const char *group, const char *user, const char *dsName);
51 const char *GetDataSetPath(const char *group, const char *user, const char *dsName,
52 TString &md5path, Bool_t local = kFALSE);
53 void Init();
54 Bool_t BrowseDataSets(const char *group, const char *user, const char *dsName,
56
57 Bool_t RemoveDataSet(const char *group, const char *user, const char *dsName);
58 Bool_t ExistsDataSet(const char *group, const char *user, const char *dsName);
59
60 Int_t ScanDataSet(const char *group, const char *user, const char *dsName, UInt_t option = kReopen | kDebug);
61
62 Int_t ChecksumDataSet(const char *path, const char *md5path, TString &checksum);
63
64 Int_t CreateLsFile(const char *group, const char *user, Long_t &mtime, TString &checksum);
65 Int_t FillLsDataSet(const char *group, const char *user, const char *dsName, TList *out, UInt_t option);
66
67 void UpdateUsedSpace() override;
68
69public:
71 TDataSetManagerFile(const char *group, const char *user, const char *ins);
72 TDataSetManagerFile(const char *ins);
73 ~TDataSetManagerFile() override { }
74
75 void ParseInitOpts(const char *opts) override;
76
77 Int_t ClearCache(const char *uri = 0) override;
78 TFileCollection *GetDataSet(const char *uri, const char *srv = 0) override;
79 TMap *GetDataSets(const char *uri, UInt_t option = TDataSetManager::kExport) override;
80 Bool_t ExistsDataSet(const char *uri) override;
81 Bool_t RemoveDataSet(const char *uri) override;
82
83 Int_t RegisterDataSet(const char *uri, TFileCollection *dataSet, const char *opt) override;
84 Int_t ScanDataSet(const char *uri, UInt_t option = kReopen | kDebug) override;
85 Int_t NotifyUpdate(const char *group, const char *user,
86 const char *dspath, Long_t mtime, const char *checksum = 0) override;
87 Int_t ShowCache(const char *uri = 0) override;
88
89 // These should / could be private but they are used directly by the external daemon
90 TFileCollection *GetDataSet(const char *group, const char *user, const char *dsName,
91 UInt_t option = 0, TMD5 **checksum = 0);
92 TMap *GetDataSets(const char *group, const char *user, const char *dsName = 0,
93 UInt_t option = 0);
94 const char *GetMSSUrl() const { return fMSSUrl; }
95 const char *GetStageOpts() const { return fStageOpts; }
96 Int_t WriteDataSet(const char *group, const char *user, const char *dsName,
97 TFileCollection *dataset, UInt_t option = 0, TMD5 *checksum = 0);
98 Long_t GetModTime(const char *uri);
99
100 ClassDefOverride(TDataSetManagerFile, 0) // DataSet manager for files
101};
102
103#endif
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
long Long_t
Definition RtypesCore.h:54
unsigned int UInt_t
Definition RtypesCore.h:46
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
const char *const kDataSet_LocalCache
const char *const kDataSet_DataSetList
const char *const kDataSet_LockLocation
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
Int_t NotifyUpdate(const char *group, const char *user, const char *dspath, Long_t mtime, const char *checksum=0) override
Save into the <datasetdir>/kDataSet_DataSetList file the name of the updated or created or modified d...
Int_t ChecksumDataSet(const char *path, const char *md5path, TString &checksum)
Calculate the checksum of the indicated dataset at 'path' and save it to the appropriate file 'md5pat...
TMap * GetDataSets(const char *uri, UInt_t option=TDataSetManager::kExport) override
Returns all datasets for the <group> and <user> specified by <uri>.
Int_t WriteDataSet(const char *group, const char *user, const char *dsName, TFileCollection *dataset, UInt_t option=0, TMD5 *checksum=0)
Writes indicated dataset.
const char * GetMSSUrl() const
Int_t ShowCache(const char *uri=0) override
Show cached information matching uri.
Int_t CreateLsFile(const char *group, const char *user, Long_t &mtime, TString &checksum)
Create or recreate the dataset lists for 'uri'.
Bool_t ExistsDataSet(const char *group, const char *user, const char *dsName)
Checks if the indicated dataset exits.
const char * GetDataSetPath(const char *group, const char *user, const char *dsName)
void ParseInitOpts(const char *opts) override
Parse the input string and set the init bits accordingly Format is dir:<datasetdir> [mss:<mss-url>] [...
Bool_t BrowseDataSets(const char *group, const char *user, const char *dsName, UInt_t option, TObject *target)
Adds the dataset in the folder of group, user to the list in target.
Int_t RegisterDataSet(const char *uri, TFileCollection *dataSet, const char *opt) override
Register a dataset, perfoming quota checkings and verification, if required.
void InitLocalCache()
Init the local cache if required.
Bool_t RemoveDataSet(const char *group, const char *user, const char *dsName)
Removes the indicated dataset.
Int_t CheckLocalCache(const char *group, const char *user, const char *dsName="ls", UInt_t option=0)
Check if the local cache information for group, user, dsName is up-to-date If not,...
Int_t ScanDataSet(const char *group, const char *user, const char *dsName, UInt_t option=kReopen|kDebug)
See documentation of ScanDataSet(TFileCollection *dataset, UInt_t option)
Int_t FillLsDataSet(const char *group, const char *user, const char *dsName, TList *out, UInt_t option)
Check for the 'ls.txt' for 'group' and 'user' and fill the path for the ls file in 'out'.
const char * GetStageOpts() const
void UpdateUsedSpace() override
updates the used space maps
Long_t GetModTime(const char *uri)
Gets last dataset modification time.
void Init()
Do the real inititialization.
TFileCollection * GetDataSet(const char *uri, const char *srv=0) override
Utility function used in various methods for user dataset upload.
Int_t ClearCache(const char *uri=0) override
Clear cached information matching uri.
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
A doubly linked list.
Definition TList.h:38
This code implements the MD5 message-digest algorithm.
Definition TMD5.h:44
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition TMap.h:40
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139