Logo ROOT   6.16/01
Reference Guide
TFile.h
Go to the documentation of this file.
1// @(#)root/io:$Id$
2// Author: Rene Brun 28/11/94
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_TFile
13#define ROOT_TFile
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TFile //
19// //
20// ROOT file. //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include <atomic>
25
26#include "Compression.h"
27#include "TDirectoryFile.h"
28#include "TMap.h"
29#include "TUrl.h"
31
32#ifdef R__USE_IMT
33#include "ROOT/TRWSpinLock.hxx"
34#include <mutex>
35#endif
36
37
38class TFree;
39class TArrayC;
40class TArchiveFile;
41class TFileOpenHandle;
42class TFileCacheRead;
43class TFileCacheWrite;
44class TProcessID;
45class TStopwatch;
46class TFilePrefetch;
47
48class TFile : public TDirectoryFile {
49 friend class TDirectoryFile;
50 friend class TFilePrefetch;
51// TODO: We need to make sure only one TBasket is being written at a time
52// if we are writing multiple baskets in parallel.
53#ifdef R__USE_IMT
54 friend class TBasket;
55#endif
56
57public:
58 /// Asynchronous open request status
61 /// Open timeout constants
62 enum EOpenTimeOut { kInstantTimeout = 0, kEternalTimeout = 999999999 };
63
64 /// TTreeCache flushing semantics
66
67protected:
68 Double_t fSumBuffer; ///<Sum of buffer sizes of objects written so far
69 Double_t fSum2Buffer; ///<Sum of squares of buffer sizes of objects written so far
70 Long64_t fBytesWrite; ///<Number of bytes written to this file
71 Long64_t fBytesRead; ///<Number of bytes read from this file
72 Long64_t fBytesReadExtra; ///<Number of extra bytes (overhead) read by the readahead buffer
73 Long64_t fBEGIN; ///<First used byte in file
74 Long64_t fEND; ///<Last used byte in file
75 Long64_t fSeekFree; ///<Location on disk of free segments structure
76 Long64_t fSeekInfo; ///<Location on disk of StreamerInfo record
77 Int_t fD; ///<File descriptor
78 Int_t fVersion; ///<File format version
79 Int_t fCompress; ///<Compression level and algorithm
80 Int_t fNbytesFree; ///<Number of bytes for free segments structure
81 Int_t fNbytesInfo; ///<Number of bytes for StreamerInfo record
82 Int_t fWritten; ///<Number of objects written so far
83 Int_t fNProcessIDs; ///<Number of TProcessID written to this file
84 Int_t fReadCalls; ///<Number of read calls ( not counting the cache calls )
85 TString fRealName; ///<Effective real file name (not original url)
86 TString fOption; ///<File options
87 Char_t fUnits; ///<Number of bytes for file pointers
88 TList *fFree; ///<Free segments linked list table
89 TArrayC *fClassIndex; ///<!Index of TStreamerInfo classes written to this file
90 TObjArray *fProcessIDs; ///<!Array of pointers to TProcessIDs
91 Long64_t fOffset; ///<!Seek offset cache
92 TArchiveFile *fArchive; ///<!Archive file from which we read this file
93 TFileCacheRead *fCacheRead; ///<!Pointer to the read cache (if any)
94 TMap *fCacheReadMap; ///<!Pointer to the read cache (if any)
95 TFileCacheWrite *fCacheWrite; ///<!Pointer to the write cache (if any)
96 Long64_t fArchiveOffset; ///<!Offset at which file starts in archive
97 Bool_t fIsArchive : 1; ///<!True if this is a pure archive file
98 Bool_t fNoAnchorInName : 1; ///<!True if we don't want to force the anchor to be appended to the file name
99 Bool_t fIsRootFile : 1; ///<!True is this is a ROOT file, raw file otherwise
100 Bool_t fInitDone : 1; ///<!True if the file has been initialized
101 Bool_t fMustFlush : 1; ///<!True if the file buffers must be flushed
102 Bool_t fIsPcmFile : 1; ///<!True if the file is a ROOT pcm file.
103 TFileOpenHandle *fAsyncHandle; ///<!For proper automatic cleanup
104 EAsyncOpenStatus fAsyncOpenStatus; ///<!Status of an asynchronous open request
105 TUrl fUrl; ///<!URL of file
106
107 TList *fInfoCache; ///<!Cached list of the streamer infos in this file
108 TList *fOpenPhases; ///<!Time info about open phases
109
110#ifdef R__USE_IMT
111 static ROOT::TRWSpinLock fgRwLock; ///<!Read-write lock to protect global PID list
112 std::mutex fWriteMutex; ///<!Lock for writing baskets / keys into the file.
113 static ROOT::Internal::RConcurrentHashColl fgTsSIHashes; ///<!TS Set of hashes built from read streamer infos
114#endif
115
116 static TList *fgAsyncOpenRequests; //List of handles for pending open requests
117
118 static TString fgCacheFileDir; ///<Directory where to locally stage files
119 static Bool_t fgCacheFileDisconnected; ///<Indicates, we trust in the files in the cache dir without stat on the cached file
120 static Bool_t fgCacheFileForce; ///<Indicates, to force all READ to CACHEREAD
121 static UInt_t fgOpenTimeout; ///<Timeout for open operations in ms - 0 corresponds to blocking i/o
122 static Bool_t fgOnlyStaged ; ///<Before the file is opened, it is checked, that the file is staged, if not, the open fails
123
124 static std::atomic<Long64_t> fgBytesWrite; ///<Number of bytes written by all TFile objects
125 static std::atomic<Long64_t> fgBytesRead; ///<Number of bytes read by all TFile objects
126 static std::atomic<Long64_t> fgFileCounter; ///<Counter for all opened files
127 static std::atomic<Int_t> fgReadCalls; ///<Number of bytes read from all TFile objects
128 static Int_t fgReadaheadSize; ///<Readahead buffer size
129 static Bool_t fgReadInfo; ///<if true (default) ReadStreamerInfo is called when opening a file
131 virtual void Init(Bool_t create);
133 Int_t ReadBufferViaCache(char *buf, Int_t len);
134 Int_t WriteBufferViaCache(const char *buf, Int_t len);
135
136 ////////////////////////////////////////////////////////////////////////////////
137 /// \brief Simple struct of the return value of GetStreamerInfoListImpl
138 struct InfoListRet {
142 };
143
144 virtual InfoListRet GetStreamerInfoListImpl(bool lookupSICache);
145
146 // Creating projects
147 Int_t MakeProjectParMake(const char *packname, const char *filename);
148 Int_t MakeProjectParProofInf(const char *packname, const char *proofinfdir);
149
150 // Interface to basic system I/O routines
151 virtual Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode);
152 virtual Int_t SysClose(Int_t fd);
153 virtual Int_t SysRead(Int_t fd, void *buf, Int_t len);
154 virtual Int_t SysWrite(Int_t fd, const void *buf, Int_t len);
155 virtual Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence);
156 virtual Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime);
157 virtual Int_t SysSync(Int_t fd);
158
159 // Interface for text-based TDirectory I/O
160 virtual Long64_t DirCreateEntry(TDirectory*) { return 0; }
161 virtual Int_t DirReadKeys(TDirectory*) { return 0; }
162 virtual void DirWriteKeys(TDirectory*) {}
163 virtual void DirWriteHeader(TDirectory*) {}
164
165private:
166 TFile(const TFile &); //Files cannot be copied
167 void operator=(const TFile &);
168
169 static void CpProgress(Long64_t bytesread, Long64_t size, TStopwatch &watch);
170 static TFile *OpenFromCache(const char *name, Option_t * = "",
171 const char *ftitle = "", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose,
172 Int_t netopt = 0);
173
174public:
175 /// TFile status bits. BIT(13) is taken up by TObject
182 kRedirected = BIT(16)
183 };
184 enum ERelativeTo { kBeg = 0, kCur = 1, kEnd = 2 };
185 enum { kStartBigFile = 2000000000 };
186 /// File type
187 enum EFileType { kDefault = 0, kLocal = 1, kNet = 2, kWeb = 3, kFile = 4, kMerge = 5};
188
189 TFile();
190 TFile(const char *fname, Option_t *option="", const char *ftitle="", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose);
191 virtual ~TFile();
192 virtual void Close(Option_t *option=""); // *MENU*
193 virtual void Copy(TObject &) const { MayNotUse("Copy(TObject &)"); }
194 virtual Bool_t Cp(const char *dst, Bool_t progressbar = kTRUE,UInt_t buffersize = 1000000);
195 virtual TKey* CreateKey(TDirectory* mother, const TObject* obj, const char* name, Int_t bufsize);
196 virtual TKey* CreateKey(TDirectory* mother, const void* obj, const TClass* cl,
197 const char* name, Int_t bufsize);
198 static TFile *&CurrentFile(); // Return the current file for this thread.
199 virtual void Delete(const char *namecycle="");
200 virtual void Draw(Option_t *option="");
201 virtual void DrawMap(const char *keys="*",Option_t *option=""); // *MENU*
202 virtual void FillBuffer(char *&buffer);
203 virtual void Flush();
204 TArchiveFile *GetArchive() const { return fArchive; }
206 Int_t GetBestBuffer() const;
207 virtual Int_t GetBytesToPrefetch() const;
208 TFileCacheRead *GetCacheRead(const TObject* tree = 0) const;
210 TArrayC *GetClassIndex() const { return fClassIndex; }
215 virtual Long64_t GetEND() const { return fEND; }
216 virtual Int_t GetErrno() const;
217 virtual void ResetErrno() const;
218 Int_t GetFd() const { return fD; }
219 virtual const TUrl *GetEndpointUrl() const { return &fUrl; }
221 TList *GetListOfFree() const { return fFree; }
222 virtual Int_t GetNfree() const { return fFree->GetSize(); }
223 virtual Int_t GetNProcessIDs() const { return fNProcessIDs; }
224 Option_t *GetOption() const { return fOption.Data(); }
225 virtual Long64_t GetBytesRead() const { return fBytesRead; }
226 virtual Long64_t GetBytesReadExtra() const { return fBytesReadExtra; }
227 virtual Long64_t GetBytesWritten() const;
228 virtual Int_t GetReadCalls() const { return fReadCalls; }
229 Int_t GetVersion() const { return fVersion; }
230 Int_t GetRecordHeader(char *buf, Long64_t first, Int_t maxbytes,
231 Int_t &nbytes, Int_t &objlen, Int_t &keylen);
232 virtual Int_t GetNbytesInfo() const {return fNbytesInfo;}
233 virtual Int_t GetNbytesFree() const {return fNbytesFree;}
234 virtual TString GetNewUrl() { return ""; }
236 virtual Long64_t GetSeekFree() const {return fSeekFree;}
237 virtual Long64_t GetSeekInfo() const {return fSeekInfo;}
238 virtual Long64_t GetSize() const;
239 virtual TList *GetStreamerInfoList() final; // Note: to override behavior, please override GetStreamerInfoListImpl
241 virtual void IncrementProcessIDs() { fNProcessIDs++; }
242 virtual Bool_t IsArchive() const { return fIsArchive; }
243 Bool_t IsBinary() const { return TestBit(kBinaryFile); }
244 Bool_t IsRaw() const { return !fIsRootFile; }
245 virtual Bool_t IsOpen() const;
246 virtual void ls(Option_t *option="") const;
247 virtual void MakeFree(Long64_t first, Long64_t last);
248 virtual void MakeProject(const char *dirname, const char *classes="*",
249 Option_t *option="new"); // *MENU*
250 virtual void Map(Option_t *opt); // *MENU*
251 virtual void Map() { Map(""); }; // *MENU*
252 virtual Bool_t Matches(const char *name);
253 virtual Bool_t MustFlush() const {return fMustFlush;}
254 virtual void Paint(Option_t *option="");
255 virtual void Print(Option_t *option="") const;
256 virtual Bool_t ReadBufferAsync(Long64_t offs, Int_t len);
257 virtual Bool_t ReadBuffer(char *buf, Int_t len);
258 virtual Bool_t ReadBuffer(char *buf, Long64_t pos, Int_t len);
259 virtual Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf);
260 virtual void ReadFree();
261 virtual TProcessID *ReadProcessID(UShort_t pidf);
262 virtual void ReadStreamerInfo();
263 virtual Int_t Recover();
264 virtual Int_t ReOpen(Option_t *mode);
265 virtual void Seek(Long64_t offset, ERelativeTo pos = kBeg);
266 virtual void SetCacheRead(TFileCacheRead *cache, TObject* tree = 0, ECacheAction action = kDisconnect);
267 virtual void SetCacheWrite(TFileCacheWrite *cache);
271 virtual void SetEND(Long64_t last) { fEND = last; }
272 virtual void SetOffset(Long64_t offset, ERelativeTo pos = kBeg);
273 virtual void SetOption(Option_t *option=">") { fOption = option; }
274 virtual void SetReadCalls(Int_t readcalls = 0) { fReadCalls = readcalls; }
275 virtual void ShowStreamerInfo();
276 virtual Int_t Sizeof() const;
277 void SumBuffer(Int_t bufsize);
278 virtual Bool_t WriteBuffer(const char *buf, Int_t len);
279 virtual Int_t Write(const char *name=0, Int_t opt=0, Int_t bufsiz=0);
280 virtual Int_t Write(const char *name=0, Int_t opt=0, Int_t bufsiz=0) const;
281 virtual void WriteFree();
282 virtual void WriteHeader();
283 virtual UShort_t WriteProcessID(TProcessID *pid);
284 virtual void WriteStreamerInfo();
285
286 static TFileOpenHandle
287 *AsyncOpen(const char *name, Option_t *option = "",
288 const char *ftitle = "", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose,
289 Int_t netopt = 0);
290 static TFile *Open(const char *name, Option_t *option = "",
291 const char *ftitle = "", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose,
292 Int_t netopt = 0);
293 static TFile *Open(TFileOpenHandle *handle);
294
295 static EFileType GetType(const char *name, Option_t *option = "", TString *prefix = 0);
296
297 static EAsyncOpenStatus GetAsyncOpenStatus(const char *name);
299 static const TUrl *GetEndpointUrl(const char *name);
300
301 static Long64_t GetFileBytesRead();
303 static Int_t GetFileReadCalls();
304 static Int_t GetReadaheadSize();
305
306 static void SetFileBytesRead(Long64_t bytes = 0);
307 static void SetFileBytesWritten(Long64_t bytes = 0);
308 static void SetFileReadCalls(Int_t readcalls = 0);
309 static void SetReadaheadSize(Int_t bufsize = 256000);
310 static void SetReadStreamerInfo(Bool_t readinfo=kTRUE);
312
313 static Long64_t GetFileCounter();
314 static void IncrementFileCounter();
315
316 static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected = kTRUE,
317 Bool_t forceCacheread = kFALSE)
318 { return SetCacheFileDir(std::string_view(cacheDir), operateDisconnected, forceCacheread); }
319 static Bool_t SetCacheFileDir(std::string_view cacheDir, Bool_t operateDisconnected = kTRUE,
320 Bool_t forceCacheread = kFALSE);
321 static const char *GetCacheFileDir();
322 static Bool_t ShrinkCacheFileDir(Long64_t shrinkSize, Long_t cleanupInteval = 0);
323 static Bool_t Cp(const char *src, const char *dst, Bool_t progressbar = kTRUE,
324 UInt_t buffersize = 1000000);
325
326 static UInt_t SetOpenTimeout(UInt_t timeout); // in ms
327 static UInt_t GetOpenTimeout(); // in ms
328 static Bool_t SetOnlyStaged(Bool_t onlystaged);
329 static Bool_t GetOnlyStaged();
330
331 ClassDef(TFile,8) //ROOT file
332};
333
334#ifndef __CINT__
335#define gFile (TFile::CurrentFile())
336
337#elif defined(__MAKECINT__)
338// To properly handle the use of gFile in header files (in static declarations)
340#endif
341
342/**
343\class TFileOpenHandle
344\ingroup IO
345Class holding info about the file being opened
346*/
347class TFileOpenHandle : public TNamed {
348
349friend class TFile;
350friend class TAlienFile;
351
352private:
353 TString fOpt; ///< Options
354 Int_t fCompress; ///< Compression level and algorithm
355 Int_t fNetOpt; ///< Network options
356 TFile *fFile; ///< TFile instance of the file being opened
357
358 TFileOpenHandle(TFile *f) : TNamed("",""), fOpt(""), fCompress(ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose),
359 fNetOpt(0), fFile(f) { }
360 TFileOpenHandle(const char *n, const char *o, const char *t, Int_t cmp,
361 Int_t no) : TNamed(n,t), fOpt(o), fCompress(cmp),
362 fNetOpt(no), fFile(0) { }
365
366 TFile *GetFile() const { return fFile; }
367
368public:
370
371 Bool_t Matches(const char *name);
372
373 const char *GetOpt() const { return fOpt; }
374 Int_t GetCompress() const { return fCompress; }
375 Int_t GetNetOpt() const { return fNetOpt; }
376};
377
378//______________________________________________________________________________
380{
381 return (fCompress < 0) ? -1 : fCompress / 100;
382}
383
384//______________________________________________________________________________
386{
387 return (fCompress < 0) ? -1 : fCompress % 100;
388}
389
390//______________________________________________________________________________
392{
393 return (fCompress < 0) ? -1 : fCompress;
394}
395
396#endif
#define R__EXTERN
Definition: DllImport.h:27
#define f(i)
Definition: RSha256.hxx:104
unsigned short UShort_t
Definition: RtypesCore.h:36
int Int_t
Definition: RtypesCore.h:41
char Char_t
Definition: RtypesCore.h:29
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
long long Long64_t
Definition: RtypesCore.h:69
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:324
#define BIT(n)
Definition: Rtypes.h:82
#define gFile
Definition: TFile.h:335
This class is a TS set of unsigned set.
Class describing an archive file containing multiple sub-files, like a ZIP or TAR archive.
Definition: TArchiveFile.h:24
Array of chars or bytes (8 bits per element).
Definition: TArrayC.h:27
Manages buffers for branches of a Tree.
Definition: TBasket.h:34
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:75
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Definition: TCollection.h:182
A ROOT file is structured in Directories (like a file system).
Describe directory structure in memory.
Definition: TDirectory.h:34
A cache when reading files over the network.
A cache when writing files over the network.
Class holding info about the file being opened.
Definition: TFile.h:347
TFile * fFile
TFile instance of the file being opened.
Definition: TFile.h:356
Int_t fNetOpt
Network options.
Definition: TFile.h:355
TFileOpenHandle(TFile *f)
Definition: TFile.h:358
TString fOpt
Options.
Definition: TFile.h:353
TFileOpenHandle(const char *n, const char *o, const char *t, Int_t cmp, Int_t no)
Definition: TFile.h:360
Int_t GetNetOpt() const
Definition: TFile.h:375
TFileOpenHandle(const TFileOpenHandle &)
TFile * GetFile() const
Definition: TFile.h:366
~TFileOpenHandle()
Definition: TFile.h:369
Int_t fCompress
Compression level and algorithm.
Definition: TFile.h:354
const char * GetOpt() const
Definition: TFile.h:373
Bool_t Matches(const char *name)
Return kTRUE if this async request matches the open request specified by 'url'.
Definition: TFile.cxx:4659
TFileOpenHandle & operator=(const TFileOpenHandle &)
Int_t GetCompress() const
Definition: TFile.h:374
The prefetching mechanism uses two classes (TFilePrefetch and TFPBlock) to prefetch in advance a bloc...
Definition: TFilePrefetch.h:31
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
virtual void ls(Option_t *option="") const
List file contents.
Definition: TFile.cxx:1406
static std::atomic< Long64_t > fgBytesRead
Number of bytes read by all TFile objects.
Definition: TFile.h:125
Int_t fReadCalls
Number of read calls ( not counting the cache calls )
Definition: TFile.h:84
static void SetFileBytesWritten(Long64_t bytes=0)
Definition: TFile.cxx:4480
static Bool_t fgCacheFileForce
Indicates, to force all READ to CACHEREAD.
Definition: TFile.h:120
Long64_t fBytesRead
Number of bytes read from this file.
Definition: TFile.h:71
virtual Long64_t GetSeekFree() const
Definition: TFile.h:236
virtual TProcessID * ReadProcessID(UShort_t pidf)
The TProcessID with number pidf is read from this file.
Definition: TFile.cxx:1851
virtual void Seek(Long64_t offset, ERelativeTo pos=kBeg)
Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
Definition: TFile.cxx:2173
static Bool_t GetOnlyStaged()
Returns staged only flag.
Definition: TFile.cxx:4623
static void IncrementFileCounter()
Definition: TFile.cxx:4489
static Bool_t ShrinkCacheFileDir(Long64_t shrinkSize, Long_t cleanupInteval=0)
Try to shrink the cache to the desired size.
Definition: TFile.cxx:4535
Long64_t fSeekFree
Location on disk of free segments structure.
Definition: TFile.h:75
static Int_t fgReadaheadSize
Readahead buffer size.
Definition: TFile.h:128
Double_t fSum2Buffer
Sum of squares of buffer sizes of objects written so far.
Definition: TFile.h:69
static void SetReadaheadSize(Int_t bufsize=256000)
Definition: TFile.cxx:4474
static Bool_t fgCacheFileDisconnected
Indicates, we trust in the files in the cache dir without stat on the cached file.
Definition: TFile.h:119
const TList * GetStreamerInfoCache()
Returns the cached list of StreamerInfos used in this file.
Definition: TFile.cxx:1317
Int_t GetVersion() const
Definition: TFile.h:229
static Bool_t GetReadStreamerInfo()
If the streamerinfos are to be read at file opening.
Definition: TFile.cxx:3633
TArchiveFile * fArchive
!Archive file from which we read this file
Definition: TFile.h:92
virtual void Delete(const char *namecycle="")
Delete object namecycle.
Definition: TFile.cxx:1060
virtual Int_t SysSync(Int_t fd)
Interface to system fsync. All arguments like in POSIX fsync().
Definition: TFile.cxx:4421
virtual void Close(Option_t *option="")
Close a file.
Definition: TFile.cxx:912
virtual Long64_t DirCreateEntry(TDirectory *)
Definition: TFile.h:160
virtual Int_t ReOpen(Option_t *mode)
Reopen a file with a different access mode.
Definition: TFile.cxx:2059
virtual void ReadStreamerInfo()
Read the list of StreamerInfo from this file.
Definition: TFile.cxx:3498
virtual Bool_t Matches(const char *name)
Return kTRUE if 'url' matches the coordinates of this file.
Definition: TFile.cxx:4635
Bool_t IsBinary() const
Definition: TFile.h:243
Bool_t IsRaw() const
Definition: TFile.h:244
TArrayC * fClassIndex
!Index of TStreamerInfo classes written to this file
Definition: TFile.h:89
static Long64_t GetFileBytesWritten()
Static function returning the total number of bytes written to all files.
Definition: TFile.cxx:4452
virtual InfoListRet GetStreamerInfoListImpl(bool lookupSICache)
See documentation of GetStreamerInfoList for more details.
Definition: TFile.cxx:1327
Int_t GetCompressionSettings() const
Definition: TFile.h:391
static void SetReadStreamerInfo(Bool_t readinfo=kTRUE)
Specify if the streamerinfos must be read at file opening.
Definition: TFile.cxx:3623
virtual Int_t Sizeof() const
Return the size in bytes of the file header.
Definition: TFile.cxx:2296
Bool_t fNoAnchorInName
!True if we don't want to force the anchor to be appended to the file name
Definition: TFile.h:98
virtual Int_t DirReadKeys(TDirectory *)
Definition: TFile.h:161
static void SetFileBytesRead(Long64_t bytes=0)
Definition: TFile.cxx:4477
TArrayC * GetClassIndex() const
Definition: TFile.h:210
Long64_t fSeekInfo
Location on disk of StreamerInfo record.
Definition: TFile.h:76
TList * GetListOfFree() const
Definition: TFile.h:221
Int_t GetBestBuffer() const
Return the best buffer size of objects on this file.
Definition: TFile.cxx:1136
TList * fOpenPhases
!Time info about open phases
Definition: TFile.h:108
virtual void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
See comments for function SetCompressionSettings.
Definition: TFile.cxx:2218
TFileCacheWrite * GetCacheWrite() const
Return a pointer to the current write cache.
Definition: TFile.cxx:1232
static void SetFileReadCalls(Int_t readcalls=0)
Definition: TFile.cxx:4483
static TString fgCacheFileDir
Directory where to locally stage files.
Definition: TFile.h:118
virtual Int_t SysRead(Int_t fd, void *buf, Int_t len)
Interface to system read. All arguments like in POSIX read().
Definition: TFile.cxx:4375
static EFileType GetType(const char *name, Option_t *option="", TString *prefix=0)
Resolve the file type as a function of the protocol field in 'name'.
Definition: TFile.cxx:4690
Int_t fVersion
File format version.
Definition: TFile.h:78
virtual void FillBuffer(char *&buffer)
Encode file output buffer.
Definition: TFile.cxx:1123
static std::atomic< Long64_t > fgFileCounter
Counter for all opened files.
Definition: TFile.h:126
virtual EAsyncOpenStatus GetAsyncOpenStatus()
Definition: TFile.h:130
static UInt_t GetOpenTimeout()
Returns open timeout (in ms).
Definition: TFile.cxx:4603
static void CpProgress(Long64_t bytesread, Long64_t size, TStopwatch &watch)
Print file copy progress.
Definition: TFile.cxx:4845
Long64_t GetArchiveOffset() const
Definition: TFile.h:205
static Bool_t fgOnlyStaged
Before the file is opened, it is checked, that the file is staged, if not, the open fails.
Definition: TFile.h:122
virtual Int_t GetNProcessIDs() const
Definition: TFile.h:223
Bool_t fMustFlush
!True if the file buffers must be flushed
Definition: TFile.h:101
TUrl fUrl
!URL of file
Definition: TFile.h:105
Int_t WriteBufferViaCache(const char *buf, Int_t len)
Write buffer via cache.
Definition: TFile.cxx:2418
static ROOT::TRWSpinLock fgRwLock
!Read-write lock to protect global PID list
Definition: TFile.h:111
static Long64_t GetFileBytesRead()
Static function returning the total number of bytes read from all files.
Definition: TFile.cxx:4443
Int_t ReadBufferViaCache(char *buf, Int_t len)
Read buffer via cache.
Definition: TFile.cxx:1789
virtual TKey * CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
Creates key for object and converts data to buffer.
Definition: TFile.cxx:1009
virtual void Map()
Definition: TFile.h:251
virtual void WriteFree()
Write FREE linked list on the file.
Definition: TFile.cxx:2442
static Int_t GetReadaheadSize()
Static function returning the readahead buffer size.
Definition: TFile.cxx:4468
virtual Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf)
Read the nbuf blocks described in arrays pos and len.
Definition: TFile.cxx:1721
static Long64_t GetFileCounter()
Definition: TFile.cxx:4486
TMap * fCacheReadMap
!Pointer to the read cache (if any)
Definition: TFile.h:94
Long64_t fBEGIN
First used byte in file.
Definition: TFile.h:73
Int_t MakeProjectParProofInf(const char *packname, const char *proofinfdir)
Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'.
Definition: TFile.cxx:3379
virtual UShort_t WriteProcessID(TProcessID *pid)
Check if the ProcessID pidd is already in the file, if not, add it and return the index number in the...
Definition: TFile.cxx:3654
virtual void MakeProject(const char *dirname, const char *classes="*", Option_t *option="new")
Generate source code necessary to access the objects stored in the file.
Definition: TFile.cxx:2622
Long64_t fArchiveOffset
!Offset at which file starts in archive
Definition: TFile.h:96
EOpenTimeOut
Open timeout constants.
Definition: TFile.h:62
@ kInstantTimeout
Definition: TFile.h:62
@ kEternalTimeout
Definition: TFile.h:62
Int_t fNbytesInfo
Number of bytes for StreamerInfo record.
Definition: TFile.h:81
virtual Long64_t GetSize() const
Returns the current file size.
Definition: TFile.cxx:1298
Int_t GetFd() const
Definition: TFile.h:218
virtual Bool_t IsOpen() const
Returns kTRUE in case file is open and kFALSE if file is not open.
Definition: TFile.cxx:1418
TFileOpenHandle * fAsyncHandle
!For proper automatic cleanup
Definition: TFile.h:103
static Bool_t SetOnlyStaged(Bool_t onlystaged)
Sets only staged flag.
Definition: TFile.cxx:4613
virtual Int_t GetReadCalls() const
Definition: TFile.h:228
virtual TString GetNewUrl()
Definition: TFile.h:234
virtual Long64_t GetBytesRead() const
Definition: TFile.h:225
virtual Int_t GetErrno() const
Method returning errno. Is overriden in TRFIOFile.
Definition: TFile.cxx:1199
Int_t GetCompressionLevel() const
Definition: TFile.h:385
static Bool_t fgReadInfo
if true (default) ReadStreamerInfo is called when opening a file
Definition: TFile.h:129
virtual void Init(Bool_t create)
Initialize a TFile object.
Definition: TFile.cxx:592
virtual Int_t Write(const char *name=0, Int_t opt=0, Int_t bufsiz=0)
Write memory objects to this file.
Definition: TFile.cxx:2335
Long64_t GetRelOffset() const
Definition: TFile.h:235
virtual void SetReadCalls(Int_t readcalls=0)
Definition: TFile.h:274
virtual void SetCacheWrite(TFileCacheWrite *cache)
Set a pointer to the write cache.
Definition: TFile.cxx:2287
TString fOption
File options.
Definition: TFile.h:86
virtual Int_t GetNfree() const
Definition: TFile.h:222
virtual Long64_t GetEND() const
Definition: TFile.h:215
virtual Bool_t WriteBuffer(const char *buf, Int_t len)
Write a buffer to the file.
Definition: TFile.cxx:2375
static TFileOpenHandle * AsyncOpen(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Submit an asynchronous open request.
Definition: TFile.cxx:4215
void SumBuffer(Int_t bufsize)
Increment statistics for buffer sizes of objects in this file.
Definition: TFile.cxx:2316
static const char * GetCacheFileDir()
Get the directory where to locally stage/cache remote files.
Definition: TFile.cxx:4523
EAsyncOpenStatus
Asynchronous open request status.
Definition: TFile.h:59
@ kAOSSuccess
Definition: TFile.h:60
@ kAOSNotAsync
Definition: TFile.h:59
@ kAOSInProgress
Definition: TFile.h:60
@ kAOSFailure
Definition: TFile.h:59
virtual void WriteStreamerInfo()
Write the list of TStreamerInfo as a single object in this file The class Streamer description for al...
Definition: TFile.cxx:3683
virtual Long64_t GetBytesWritten() const
Return the total number of bytes written so far to the file.
Definition: TFile.cxx:4435
ERelativeTo
Definition: TFile.h:184
@ kCur
Definition: TFile.h:184
@ kBeg
Definition: TFile.h:184
@ kEnd
Definition: TFile.h:184
virtual Long64_t GetSeekInfo() const
Definition: TFile.h:237
Int_t fCompress
Compression level and algorithm.
Definition: TFile.h:79
@ kStartBigFile
Definition: TFile.h:185
virtual Int_t GetNbytesFree() const
Definition: TFile.h:233
virtual Bool_t IsArchive() const
Definition: TFile.h:242
static TFile *& CurrentFile()
Return the current ROOT file if any.
Definition: TFile.cxx:1029
virtual void SetEND(Long64_t last)
Definition: TFile.h:271
virtual void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
See comments for function SetCompressionSettings.
Definition: TFile.cxx:2204
virtual const TUrl * GetEndpointUrl() const
Definition: TFile.h:219
Int_t fNbytesFree
Number of bytes for free segments structure.
Definition: TFile.h:80
Int_t fD
File descriptor.
Definition: TFile.h:77
virtual void ResetErrno() const
Method resetting the errno. Is overridden in TRFIOFile.
Definition: TFile.cxx:1207
Bool_t FlushWriteCache()
Flush the write cache if active.
Definition: TFile.cxx:1111
virtual void IncrementProcessIDs()
Definition: TFile.h:241
Bool_t fIsPcmFile
!True if the file is a ROOT pcm file.
Definition: TFile.h:102
TFileCacheRead * fCacheRead
!Pointer to the read cache (if any)
Definition: TFile.h:93
virtual Int_t SysClose(Int_t fd)
Interface to system close. All arguments like in POSIX close().
Definition: TFile.cxx:4366
TFile()
File default Constructor.
Definition: TFile.cxx:174
Char_t fUnits
Number of bytes for file pointers.
Definition: TFile.h:87
TObjArray * fProcessIDs
!Array of pointers to TProcessIDs
Definition: TFile.h:90
virtual void SetOption(Option_t *option=">")
Definition: TFile.h:273
EFileType
File type.
Definition: TFile.h:187
@ kWeb
Definition: TFile.h:187
@ kDefault
Definition: TFile.h:187
@ kLocal
Definition: TFile.h:187
@ kMerge
Definition: TFile.h:187
@ kNet
Definition: TFile.h:187
@ kFile
Definition: TFile.h:187
virtual void ShowStreamerInfo()
Show the StreamerInfo of all classes written to this file.
Definition: TFile.cxx:3641
virtual Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence)
Interface to system lseek.
Definition: TFile.cxx:4394
virtual ~TFile()
File destructor.
Definition: TFile.cxx:542
virtual Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
Return file stat information.
Definition: TFile.cxx:4412
virtual void Print(Option_t *option="") const
Print all objects in the file.
Definition: TFile.cxx:1606
virtual Long64_t GetBytesReadExtra() const
Definition: TFile.h:226
virtual void Draw(Option_t *option="")
Fill Graphics Structure and Paint.
Definition: TFile.cxx:1073
virtual Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode)
Interface to system open. All arguments like in POSIX open().
Definition: TFile.cxx:4350
ECacheAction
TTreeCache flushing semantics.
Definition: TFile.h:65
@ kDoNotDisconnect
Definition: TFile.h:65
@ kDisconnect
Definition: TFile.h:65
static UInt_t SetOpenTimeout(UInt_t timeout)
Sets open timeout time (in ms). Returns previous timeout value.
Definition: TFile.cxx:4593
virtual void ReadFree()
Read the FREE linked list.
Definition: TFile.cxx:1825
virtual Bool_t Cp(const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
Allows to copy this file to the dst URL.
Definition: TFile.cxx:4873
static ROOT::Internal::RConcurrentHashColl fgTsSIHashes
!TS Set of hashes built from read streamer infos
Definition: TFile.h:113
Long64_t fBytesReadExtra
Number of extra bytes (overhead) read by the readahead buffer.
Definition: TFile.h:72
Long64_t fBytesWrite
Number of bytes written to this file.
Definition: TFile.h:70
TArchiveFile * GetArchive() const
Definition: TFile.h:204
Bool_t fIsRootFile
!True is this is a ROOT file, raw file otherwise
Definition: TFile.h:99
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Definition: TFile.h:316
virtual void Flush()
Synchronize a file's in-memory and on-disk states.
Definition: TFile.cxx:1094
virtual void Paint(Option_t *option="")
Paint all objects in the file.
Definition: TFile.cxx:1598
virtual void DirWriteKeys(TDirectory *)
Definition: TFile.h:162
TList * fFree
Free segments linked list table.
Definition: TFile.h:88
virtual Bool_t ReadBufferAsync(Long64_t offs, Int_t len)
Definition: TFile.cxx:5079
std::mutex fWriteMutex
!Lock for writing baskets / keys into the file.
Definition: TFile.h:112
Bool_t fInitDone
!True if the file has been initialized
Definition: TFile.h:100
virtual void DrawMap(const char *keys="*", Option_t *option="")
Draw map of objects in this file.
Definition: TFile.cxx:1081
virtual void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose)
Used to specify the compression level and algorithm.
Definition: TFile.cxx:2237
TFileCacheRead * GetCacheRead(const TObject *tree=0) const
Return a pointer to the current read cache.
Definition: TFile.cxx:1215
virtual void DirWriteHeader(TDirectory *)
Definition: TFile.h:163
virtual void MakeFree(Long64_t first, Long64_t last)
Mark unused bytes on the file.
Definition: TFile.cxx:1433
TFileCacheWrite * fCacheWrite
!Pointer to the write cache (if any)
Definition: TFile.h:95
Option_t * GetOption() const
Definition: TFile.h:224
TString fRealName
Effective real file name (not original url)
Definition: TFile.h:85
virtual void SetOffset(Long64_t offset, ERelativeTo pos=kBeg)
Set position from where to start reading.
Definition: TFile.cxx:2152
Long64_t fOffset
!Seek offset cache
Definition: TFile.h:91
static std::atomic< Long64_t > fgBytesWrite
Number of bytes written by all TFile objects.
Definition: TFile.h:124
virtual Int_t GetNbytesInfo() const
Definition: TFile.h:232
TList * fInfoCache
!Cached list of the streamer infos in this file
Definition: TFile.h:107
virtual Bool_t MustFlush() const
Definition: TFile.h:253
virtual Int_t GetBytesToPrefetch() const
Max number of bytes to prefetch.
Definition: TFile.cxx:5093
static UInt_t fgOpenTimeout
Timeout for open operations in ms - 0 corresponds to blocking i/o.
Definition: TFile.h:121
Int_t MakeProjectParMake(const char *packname, const char *filename)
Create makefile at 'filemake' for PAR package 'pack'.
Definition: TFile.cxx:3257
Long64_t fEND
Last used byte in file.
Definition: TFile.h:74
EAsyncOpenStatus fAsyncOpenStatus
!Status of an asynchronous open request
Definition: TFile.h:104
Double_t fSumBuffer
Sum of buffer sizes of objects written so far.
Definition: TFile.h:68
Bool_t fIsArchive
!True if this is a pure archive file
Definition: TFile.h:97
void operator=(const TFile &)
TObjArray * GetListOfProcessIDs() const
Definition: TFile.h:220
Int_t GetCompressionAlgorithm() const
Definition: TFile.h:379
static std::atomic< Int_t > fgReadCalls
Number of bytes read from all TFile objects.
Definition: TFile.h:127
virtual Int_t Recover()
Attempt to recover file if not correctly closed.
Definition: TFile.cxx:1945
virtual TList * GetStreamerInfoList() final
Read the list of TStreamerInfo objects written to this file.
Definition: TFile.cxx:1394
virtual void WriteHeader()
Write File Header.
Definition: TFile.cxx:2514
@ kRecovered
Definition: TFile.h:177
@ kDevNull
Definition: TFile.h:179
@ kHasReferences
Definition: TFile.h:178
@ kRedirected
Definition: TFile.h:182
@ kWriteError
Definition: TFile.h:180
@ kBinaryFile
Definition: TFile.h:181
virtual void Copy(TObject &) const
Copy this to obj.
Definition: TFile.h:193
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Create / open a file.
Definition: TFile.cxx:3975
Int_t fNProcessIDs
Number of TProcessID written to this file.
Definition: TFile.h:83
virtual void SetCacheRead(TFileCacheRead *cache, TObject *tree=0, ECacheAction action=kDisconnect)
Set a pointer to the read cache.
Definition: TFile.cxx:2264
Int_t fWritten
Number of objects written so far.
Definition: TFile.h:82
Int_t GetRecordHeader(char *buf, Long64_t first, Int_t maxbytes, Int_t &nbytes, Int_t &objlen, Int_t &keylen)
Read the logical record header starting at a certain postion.
Definition: TFile.cxx:1252
virtual Bool_t ReadBuffer(char *buf, Int_t len)
Read a buffer from the file.
Definition: TFile.cxx:1670
Float_t GetCompressionFactor()
Return the file compression factor.
Definition: TFile.cxx:1155
virtual Int_t SysWrite(Int_t fd, const void *buf, Int_t len)
Interface to system write. All arguments like in POSIX write().
Definition: TFile.cxx:4383
static Int_t GetFileReadCalls()
Static function returning the total number of read calls from all files.
Definition: TFile.cxx:4460
static TFile * OpenFromCache(const char *name, Option_t *="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Open a file for reading through the file cache.
Definition: TFile.cxx:3766
static TList * fgAsyncOpenRequests
Definition: TFile.h:116
Service class for TFile.
Definition: TFree.h:27
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition: TKey.h:24
A doubly linked list.
Definition: TList.h:44
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
An array of TObjects.
Definition: TObjArray.h:37
Mother of all ROOT objects.
Definition: TObject.h:37
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
void MayNotUse(const char *method) const
Use this method to signal that a method (defined in a base class) may not be called in a derived clas...
Definition: TObject.cxx:933
EStatusBits
Definition: TObject.h:57
A TProcessID identifies a ROOT job in a unique way in time and space.
Definition: TProcessID.h:69
Stopwatch class.
Definition: TStopwatch.h:28
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
This class represents a WWW compatible URL.
Definition: TUrl.h:35
const Int_t n
Definition: legend1.C:16
Namespace for new ROOT classes and functions.
Definition: StringConv.hxx:21
Definition: first.py:1
basic_string_view< char > string_view
Definition: RStringView.hxx:35
Definition: tree.py:1
@ kUseGlobal
Use the global compression algorithm.
Definition: Compression.h:81
@ kUseGeneralPurpose
Use the recommended general-purpose setting; moderate read / write speed and compression ratio.
Definition: Compression.h:53
Simple struct of the return value of GetStreamerInfoListImpl.
Definition: TFile.h:138
Int_t fReturnCode
Definition: TFile.h:140
ROOT::Internal::RConcurrentHashColl::HashValue fHash
Definition: TFile.h:141
TList * fList
Definition: TFile.h:139