Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGFALFile.h
Go to the documentation of this file.
1 // @(#)root/gfal:$Id$
2 // Author: Fons Rademakers 8/12/2005
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_TGFALFile
13 #define ROOT_TGFALFile
14 
15 #include "TFile.h"
16 #include "TSystem.h"
17 
18 
19 class TGFALFile : public TFile {
20 
21 private:
22  Bool_t fStatCached; ///<! (transient) is file status cached?
23  struct stat64 fStatBuffer; ///<! (transient) Cached file status buffer (for performance)
24 
25  TGFALFile() : fStatCached(kFALSE) { }
26 
27  // Interface to basic system I/O routines
28  Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode);
29  Int_t SysClose(Int_t fd);
30  Int_t SysRead(Int_t fd, void *buf, Int_t len);
31  Int_t SysWrite(Int_t fd, const void *buf, Int_t len);
32  Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence);
33  Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime);
34  Int_t SysSync(Int_t) { /* no fsync for GFAL */ return 0; }
35 
36 public:
37  TGFALFile(const char *url, Option_t *option="",
38  const char *ftitle="", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault);
39  ~TGFALFile();
40 
41  Bool_t ReadBuffer(char *buf, Int_t len);
42  Bool_t ReadBuffer(char *buf, Long64_t pos, Int_t len);
43  Bool_t WriteBuffer(const char *buf, Int_t len);
44 
45  ClassDef(TGFALFile,1) //A ROOT file that reads/writes via a GFAL
46 };
47 
48 
49 class TGFALSystem : public TSystem {
50 
51 private:
52  void *fDirp; // directory handler
53 
54  void *GetDirPtr() const { return fDirp; }
55 
56 public:
57  TGFALSystem();
58  virtual ~TGFALSystem() { }
59 
60  Int_t MakeDirectory(const char *name);
61  void *OpenDirectory(const char *name);
62  void FreeDirectory(void *dirp);
63  const char *GetDirEntry(void *dirp);
64  Int_t GetPathInfo(const char *path, FileStat_t &buf);
65  Bool_t AccessPathName(const char *path, EAccessMode mode);
66 
67  ClassDef(TGFALSystem,0) // Directory handler for GFAL
68 };
69 
70 #endif