ROOT logo
ROOT » NET » NET » TWebFile

class TWebFile: public TFile


TWebFile

A TWebFile is like a normal TFile except that it reads its data
via a standard apache web server. A TWebFile is a read-only file.


Function Members (Methods)

public:
TWebFile(const char* url, Option_t* opt = "")
TWebFile(TUrl url, Option_t* opt = "")
virtual~TWebFile()
voidTObject::AbstractMethod(const char* method) const
virtual voidTDirectoryFile::Add(TObject* obj, Bool_t replace = kFALSE)
static voidTDirectory::AddDirectory(Bool_t add = kTRUE)
static Bool_tTDirectory::AddDirectoryStatus()
virtual voidTDirectoryFile::Append(TObject* obj, Bool_t replace = kFALSE)
virtual Int_tTDirectoryFile::AppendKey(TKey* key)
virtual voidTObject::AppendPad(Option_t* option = "")
static TFileOpenHandle*TFile::AsyncOpen(const char* name, Option_t* option = "", const char* ftitle = "", Int_t compress = 1, Int_t netopt = 0)
virtual voidTDirectoryFile::Browse(TBrowser* b)
virtual voidTDirectoryFile::Build(TFile* motherFile = 0, TDirectory* motherDir = 0)
virtual Bool_tTDirectoryFile::cd(const char* path = 0)
static Bool_tTDirectory::Cd(const char* path)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTDirectory::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual TObject*TDirectoryFile::CloneObject(const TObject* obj, Bool_t autoadd = kTRUE)
virtual voidTFile::Close(Option_t* option = "")MENU
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTFile::Copy(TObject&) const
static Bool_tTFile::Cp(const char* src, const char* dst, Bool_t progressbar = kTRUE, UInt_t buffersize = 1000000)
virtual TKey*TFile::CreateKey(TDirectory* mother, const TObject* obj, const char* name, Int_t bufsize)
virtual TKey*TFile::CreateKey(TDirectory* mother, const void* obj, const TClass* cl, const char* name, Int_t bufsize)
static voidTDirectory::DecodeNameCycle(const char* namecycle, char* name, Short_t& cycle)
virtual voidTFile::Delete(const char* namecycle = "")
virtual voidTDirectory::DeleteAll(Option_t* option = "")
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTFile::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTFile::DrawMap(const char* keys = "*", Option_t* option = "")MENU
virtual voidTObject::Dump() constMENU
static voidTDirectory::EncodeNameCycle(char* buffer, const char* name, Short_t cycle)
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTFile::FillBuffer(char*& buffer)
virtual TKey*TDirectoryFile::FindKey(const char* keyname) const
virtual TKey*TDirectoryFile::FindKeyAny(const char* keyname) const
virtual TObject*TDirectory::FindObject(const char* name) const
virtual TObject*TDirectory::FindObject(const TObject* obj) const
virtual TObject*TDirectoryFile::FindObjectAny(const char* name) const
virtual TObject*TDirectoryFile::FindObjectAnyFile(const char* name) const
virtual voidTFile::Flush()
virtual TObject*TDirectoryFile::Get(const char* namecycle)
TArchiveFile*TFile::GetArchive() const
static TFile::EAsyncOpenStatusTFile::GetAsyncOpenStatus(const char* name)
static TFile::EAsyncOpenStatusTFile::GetAsyncOpenStatus(TFileOpenHandle* handle)
Int_tTFile::GetBestBuffer() const
virtual Int_tTDirectoryFile::GetBufferSize() const
virtual Long64_tTFile::GetBytesRead() const
virtual Long64_tTFile::GetBytesReadExtra() const
virtual Int_tTFile::GetBytesToPrefetch() const
virtual Long64_tTFile::GetBytesWritten() const
static const char*TFile::GetCacheFileDir()
TFileCacheRead*TFile::GetCacheRead() const
TFileCacheWrite*TFile::GetCacheWrite() const
TArrayC*TFile::GetClassIndex() const
Float_tTFile::GetCompressionFactor()
Int_tTFile::GetCompressionLevel() const
const TDatime&TDirectoryFile::GetCreationDate() const
virtual TDirectory*TDirectoryFile::GetDirectory(const char* apath, Bool_t printError = false, const char* funcname = "GetDirectory")
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Long64_tTFile::GetEND() const
virtual const TUrl*TFile::GetEndpointUrl() const
static const TUrl*TFile::GetEndpointUrl(const char* name)
virtual Int_tTFile::GetErrno() const
Int_tTFile::GetFd() const
virtual TFile*TDirectoryFile::GetFile() const
static Long64_tTFile::GetFileBytesRead()
static Long64_tTFile::GetFileBytesWritten()
static Long64_tTFile::GetFileCounter()
static Int_tTFile::GetFileReadCalls()
virtual const char*TObject::GetIconName() const
virtual TKey*TDirectoryFile::GetKey(const char* name, Short_t cycle = 9999) const
virtual TList*TDirectory::GetList() const
TList*TFile::GetListOfFree() const
virtual TList*TDirectoryFile::GetListOfKeys() const
TObjArray*TFile::GetListOfProcessIDs() const
const TDatime&TDirectoryFile::GetModificationDate() const
virtual TObject*TDirectory::GetMother() const
virtual TDirectory*TDirectory::GetMotherDir() const
virtual const char*TNamed::GetName() const
virtual Int_tTFile::GetNbytesFree() const
virtual Int_tTFile::GetNbytesInfo() const
virtual Int_tTDirectoryFile::GetNbytesKeys() const
virtual Int_tTFile::GetNfree() const
virtual Int_tTDirectoryFile::GetNkeys() const
virtual Int_tTFile::GetNProcessIDs() const
voidTDirectory::GetObject(const char* namecycle, void*& ptr)
virtual void*TDirectoryFile::GetObjectChecked(const char* namecycle, const char* classname)
virtual void*TDirectoryFile::GetObjectChecked(const char* namecycle, const TClass* cl)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual void*TDirectoryFile::GetObjectUnchecked(const char* namecycle)
static Bool_tTFile::GetOnlyStaged()
static UInt_tTFile::GetOpenTimeout()
virtual Option_t*TFile::GetOption() const
virtual const char*TDirectory::GetPath() const
virtual const char*TDirectory::GetPathStatic() const
static const char*GetProxy()
static Int_tTFile::GetReadaheadSize()
virtual Int_tTFile::GetReadCalls() const
Int_tTFile::GetRecordHeader(char* buf, Long64_t first, Int_t maxbytes, Int_t& nbytes, Int_t& objlen, Int_t& keylen)
Long64_tTFile::GetRelOffset() const
virtual Long64_tTDirectoryFile::GetSeekDir() const
virtual Long64_tTFile::GetSeekFree() const
virtual Long64_tTFile::GetSeekInfo() const
virtual Long64_tTDirectoryFile::GetSeekKeys() const
virtual Long64_tTDirectoryFile::GetSeekParent() const
virtual Long64_tGetSize() const
const TList*TFile::GetStreamerInfoCache()
virtual TList*TFile::GetStreamerInfoList()
virtual const char*TNamed::GetTitle() const
static TFile::EFileTypeTFile::GetType(const char* name, Option_t* option = "", TString* prefix = 0)
virtual UInt_tTObject::GetUniqueID() const
TUUIDTDirectory::GetUUID() const
Int_tTFile::GetVersion() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
static voidTFile::IncrementFileCounter()
virtual voidTFile::IncrementProcessIDs()
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTFile::IsArchive() const
Bool_tTFile::IsBinary() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTDirectory::IsFolder() const
virtual Bool_tTDirectoryFile::IsModified() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tIsOpen() const
Bool_tTFile::IsRaw() const
virtual Bool_tTNamed::IsSortable() const
virtual Bool_tTDirectoryFile::IsWritable() const
Bool_tTObject::IsZombie() const
virtual voidTFile::ls(Option_t* option = "") const
virtual voidTFile::MakeFree(Long64_t first, Long64_t last)
virtual voidTFile::MakeProject(const char* dirname, const char* classes = "*", Option_t* option = "new")MENU
virtual voidTFile::Map()MENU
virtual Bool_tTFile::Matches(const char* name)
voidTObject::MayNotUse(const char* method) const
virtual TDirectory*TDirectoryFile::mkdir(const char* name, const char* title = "")
virtual Bool_tTFile::MustFlush() const
virtual Bool_tTObject::Notify()
static TFile*TFile::Open(TFileOpenHandle* handle)
static TFile*TFile::Open(const char* name, Option_t* option = "", const char* ftitle = "", Int_t compress = 1, Int_t netopt = 0)
virtual TFile*TDirectoryFile::OpenFile(const char* name, Option_t* option = "", const char* ftitle = "", Int_t compress = 1, Int_t netopt = 0)
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTFile::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTFile::Print(Option_t* option = "") const
virtual voidTDirectoryFile::Purge(Short_t nkeep = 1)
virtual voidTDirectory::pwd() const
virtual Int_tTObject::Read(const char* name)
virtual voidTDirectoryFile::ReadAll(Option_t* option = "")
virtual Bool_tReadBuffer(char* buf, Int_t len)
virtual Bool_tReadBuffer(char* buf, Long64_t pos, Int_t len)
virtual Bool_tTFile::ReadBufferAsync(Long64_t offs, Int_t len)
virtual Bool_tReadBuffers(char* buf, Long64_t* pos, Int_t* len, Int_t nbuf)
virtual voidTFile::ReadFree()
virtual Int_tTDirectoryFile::ReadKeys(Bool_t forceRead = kTRUE)
virtual TProcessID*TFile::ReadProcessID(UShort_t pidf)
virtual voidTFile::ReadStreamerInfo()
virtual Int_tTDirectoryFile::ReadTObject(TObject* obj, const char* keyname)
virtual Int_tTFile::Recover()
virtual voidTDirectory::RecursiveRemove(TObject* obj)
virtual TObject*TDirectory::Remove(TObject*)
virtual Int_tReOpen(Option_t* mode)
voidTObject::ResetBit(UInt_t f)
virtual voidTFile::ResetErrno() const
virtual voidTDirectoryFile::rmdir(const char* name)
virtual voidTDirectoryFile::Save()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual Int_tTDirectoryFile::SaveObjectAs(const TObject* obj, const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidTDirectoryFile::SaveSelf(Bool_t force = kFALSE)
virtual voidSeek(Long64_t offset, TFile::ERelativeTo pos = kBeg)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTDirectoryFile::SetBufferSize(Int_t bufsize)
static Bool_tTFile::SetCacheFileDir(const char* cacheDir, Bool_t operateDisconnected = kTRUE, Bool_t forceCacheread = kFALSE)
virtual voidTFile::SetCacheRead(TFileCacheRead* cache)
virtual voidTFile::SetCacheWrite(TFileCacheWrite* cache)
virtual voidTFile::SetCompressionLevel(Int_t level = 1)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTFile::SetEND(Long64_t last)
static voidTFile::SetFileBytesRead(Long64_t bytes = 0)
static voidTFile::SetFileBytesWritten(Long64_t bytes = 0)
static voidTFile::SetFileReadCalls(Int_t readcalls = 0)
virtual voidTDirectoryFile::SetModified()
virtual voidTDirectory::SetMother(TObject* mother)
virtual voidTDirectory::SetName(const char* newname)
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTFile::SetOffset(Long64_t offset, TFile::ERelativeTo pos = kBeg)
static Bool_tTFile::SetOnlyStaged(Bool_t onlystaged)
static UInt_tTFile::SetOpenTimeout(UInt_t timeout)
virtual voidTFile::SetOption(Option_t* option = ">")
static voidSetProxy(const char* url)
static voidTFile::SetReadaheadSize(Int_t bufsize = 256000)
virtual voidTFile::SetReadCalls(Int_t readcalls = 0)
static voidTFile::SetReadStreamerInfo(Bool_t readinfo = kTRUE)
virtual voidTDirectoryFile::SetSeekDir(Long64_t v)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTDirectoryFile::SetTRefAction(TObject* ref, TObject* parent)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidTDirectoryFile::SetWritable(Bool_t writable = kTRUE)
virtual voidShowMembers(TMemberInspector& insp)
virtual voidTFile::ShowStreamerInfo()
static Bool_tTFile::ShrinkCacheFileDir(Long64_t shrinkSize, Long_t cleanupInteval = 0)
virtual Int_tTFile::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
voidTFile::SumBuffer(Int_t bufsize)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTFile::UseCache(Int_t maxCacheSize = 10, Int_t pageSize = 0)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTFile::Write(const char* name = 0, Int_t opt = 0, Int_t bufsiz = 0)
virtual Int_tTFile::Write(const char* name = 0, Int_t opt = 0, Int_t bufsiz = 0) const
virtual Bool_tTFile::WriteBuffer(const char* buf, Int_t len)
virtual voidTDirectoryFile::WriteDirHeader()
virtual voidTFile::WriteFree()
virtual voidTFile::WriteHeader()
virtual voidTDirectoryFile::WriteKeys()
Int_tTDirectory::WriteObject(const void* obj, const char* name, Option_t* option = "", Int_t bufsize = 0)
virtual Int_tTDirectoryFile::WriteObjectAny(const void* obj, const char* classname, const char* name, Option_t* option = "", Int_t bufsize = 0)
virtual Int_tTDirectoryFile::WriteObjectAny(const void* obj, const TClass* cl, const char* name, Option_t* option = "", Int_t bufsize = 0)
virtual UShort_tTFile::WriteProcessID(TProcessID* pid)
virtual voidTFile::WriteStreamerInfo()
virtual Int_tTDirectoryFile::WriteTObject(const TObject* obj, const char* name = 0, Option_t* option = "", Int_t bufsize = 0)
protected:
Bool_tTDirectory::cd1(const char* path)
static Bool_tTDirectory::Cd1(const char* path)
virtual voidTDirectoryFile::CleanTargets()
virtual Long64_tTFile::DirCreateEntry(TDirectory*)
virtual Int_tTFile::DirReadKeys(TDirectory*)
virtual voidTFile::DirWriteHeader(TDirectory*)
virtual voidTFile::DirWriteKeys(TDirectory*)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTDirectory::FillFullPath(TString& buf) const
Bool_tTFile::FlushWriteCache()
virtual TFile::EAsyncOpenStatusTFile::GetAsyncOpenStatus()
voidTObject::MakeZombie()
voidTDirectory::operator=(const TDirectory&)
Int_tTFile::ReadBufferViaCache(char* buf, Int_t len)
voidTDirectory::RegisterContext(TDirectory::TContext* ctxt)
virtual Int_tTFile::SysClose(Int_t fd)
virtual Int_tTFile::SysOpen(const char* pathname, Int_t flags, UInt_t mode)
virtual Int_tTFile::SysRead(Int_t fd, void* buf, Int_t len)
virtual Long64_tTFile::SysSeek(Int_t fd, Long64_t offset, Int_t whence)
virtual Int_tTFile::SysStat(Int_t fd, Long_t* id, Long64_t* size, Long_t* flags, Long_t* modtime)
virtual Int_tTFile::SysSync(Int_t fd)
virtual Int_tTFile::SysWrite(Int_t fd, const void* buf, Int_t len)
voidTDirectory::UnregisterContext(TDirectory::TContext* ctxt)
Int_tTFile::WriteBufferViaCache(const char* buf, Int_t len)
private:
TWebFile()
TStringBasicAuthentication()
voidCheckProxy()
Int_tGetFromWeb(char* buf, Int_t len, const TString& msg)
Int_tGetFromWeb10(char* buf, Int_t len, const TString& msg)
Int_tGetHead()
Int_tGetHunk(TSocket* s, char* hunk, Int_t maxsize)
Int_tGetLine(TSocket* s, char* line, Int_t maxsize)
const char*HttpTerminator(const char* start, const char* peeked, Int_t peeklen)
virtual voidInit(Bool_t readHeadOnly)
Bool_tReadBuffer10(char* buf, Int_t len)
Bool_tReadBuffers10(char* buf, Long64_t* pos, Int_t* len, Int_t nbuf)
voidSetMsgReadBuffer10(const char* redirectLocation = 0, Bool_t tempRedirect = kFALSE)

Data Members

public:
enum TFile::EAsyncOpenStatus { kAOSNotAsync
kAOSFailure
kAOSInProgress
kAOSSuccess
};
enum TFile::EOpenTimeOut { kInstantTimeout
kEternalTimeout
};
enum TFile::EStatusBits { kRecovered
kHasReferences
kDevNull
kWriteError
kBinaryFile
kRedirected
};
enum TFile::ERelativeTo { kBeg
kCur
kEnd
};
enum TFile::[unnamed] { kStartBigFile
};
enum TFile::EFileType { kDefault
kLocal
kNet
kWeb
kFile
};
enum TDirectoryFile::[unnamed] { kCloseDirectory
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
TArchiveFile*TFile::fArchive!Archive file from which we read this file
Long64_tTFile::fArchiveOffset!Offset at which file starts in archive
TFileOpenHandle*TFile::fAsyncHandle!For proper automatic cleanup
TFile::EAsyncOpenStatusTFile::fAsyncOpenStatus!Status of an asynchronous open request
Long64_tTFile::fBEGINFirst used byte in file
Int_tTDirectoryFile::fBufferSizeDefault buffer size to create new TKeys
Long64_tTFile::fBytesReadNumber of bytes read from this file
Long64_tTFile::fBytesReadExtraNumber of extra bytes (overhead) read by the readahead buffer
Long64_tTFile::fBytesWriteNumber of bytes written to this file
TFileCacheRead*TFile::fCacheRead!Pointer to the read cache (if any)
TFileCacheWrite*TFile::fCacheWrite!Pointer to the write cache (if any)
TArrayC*TFile::fClassIndex!Index of TStreamerInfo classes written to this file
Int_tTFile::fCompressCompression level from 0(not compressed) to 9 (max compression)
TDirectory::TContext*TDirectory::fContext!Pointer to a list of TContext object pointing to this TDirectory
Int_tTFile::fDFile descriptor
TDatimeTDirectoryFile::fDatimeCDate and time when directory is created
TDatimeTDirectoryFile::fDatimeMDate and time of last modification
Long64_tTFile::fENDLast used byte in file
TFile*TDirectoryFile::fFilepointer to current file in memory
TList*TFile::fFreeFree segments linked list table
TList*TFile::fInfoCache!Cached list of the streamer infos in this file
Bool_tTFile::fInitDone!True if the file has been initialized
Bool_tTFile::fIsArchive!True if this is a pure archive file
Bool_tTFile::fIsRootFile!True is this is a ROOT file, raw file otherwise
TList*TDirectoryFile::fKeysPointer to keys list in memory
TList*TDirectory::fListList of objects in memory
Bool_tTDirectoryFile::fModifiedtrue if directory has been modified
TObject*TDirectory::fMotherpointer to mother of the directory
Bool_tTFile::fMustFlush!True if the file buffers must be flushed
Int_tTFile::fNProcessIDsNumber of TProcessID written to this file
TStringTNamed::fNameobject identifier
Int_tTFile::fNbytesFreeNumber of bytes for free segments structure
Int_tTFile::fNbytesInfoNumber of bytes for StreamerInfo record
Int_tTDirectoryFile::fNbytesKeysNumber of bytes for the keys
Int_tTDirectoryFile::fNbytesNameNumber of bytes in TNamed at creation time
Bool_tTFile::fNoAnchorInName!True if we don't want to force the anchor to be appended to the file name
Long64_tTFile::fOffset!Seek offset cache
TList*TFile::fOpenPhases!Time info about open phases
TStringTFile::fOptionFile options
TStringTDirectory::fPathBuffer!Buffer for GetPath() function
TObjArray*TFile::fProcessIDs!Array of pointers to TProcessIDs
Int_tTFile::fReadCallsNumber of read calls ( not counting the cache calls )
TStringTFile::fRealNameEffective real file name (not original url)
Long64_tTDirectoryFile::fSeekDirLocation of directory on file
Long64_tTFile::fSeekFreeLocation on disk of free segments structure
Long64_tTFile::fSeekInfoLocation on disk of StreamerInfo record
Long64_tTDirectoryFile::fSeekKeysLocation of Keys record on file
Long64_tTDirectoryFile::fSeekParentLocation of parent directory on file
Double_tTFile::fSum2BufferSum of squares of buffer sizes of objects written so far
Double_tTFile::fSumBufferSum of buffer sizes of objects written so far
TStringTNamed::fTitleobject title
TUUIDTDirectory::fUUIDUnique identifier
Char_tTFile::fUnitsNumber of bytes for file pointers
TUrlTFile::fUrl!URL of file
Int_tTFile::fVersionFile format version
Bool_tTDirectoryFile::fWritabletrue if directory is writable
Int_tTFile::fWrittenNumber of objects written so far
static Bool_tTDirectory::fgAddDirectory!flag to add histograms, graphs,etc to the directory
static TList*TFile::fgAsyncOpenRequestsList of handles for pending open requests
static Long64_tTFile::fgBytesReadNumber of bytes read by all TFile objects
static Long64_tTFile::fgBytesWriteNumber of bytes written by all TFile objects
static TStringTFile::fgCacheFileDirDirectory where to locally stage files
static Bool_tTFile::fgCacheFileDisconnectedIndicates, we trust in the files in the cache dir without stat on the cached file
static Bool_tTFile::fgCacheFileForceIndicates, to force all READ to CACHEREAD
static Long64_tTFile::fgFileCounterCounter for all opened files
static Bool_tTFile::fgOnlyStagedBefore the file is opened, it is checked, that the file is staged, if not, the open fails
static UInt_tTFile::fgOpenTimeoutTimeout for open operations in ms - 0 corresponds to blocking i/o
static Int_tTFile::fgReadCallsNumber of bytes read from all TFile objects
static Bool_tTFile::fgReadInfoif true (default) ReadStreamerInfo is called when opening a file
static Int_tTFile::fgReadaheadSizeReadahead buffer size
private:
TStringfBasicUrlbasic url without authentication and options
TStringfBasicUrlOrgsave original url in case of temp redirection
Bool_tfHTTP11true if server support HTTP/1.1
Bool_tfHasModRoottrue if server has mod_root installed
TStringfMsgGetHeadcache GetHead() msg
TStringfMsgReadBuffercache ReadBuffer() msg
TStringfMsgReadBuffer10cache ReadBuffer10() msg
Bool_tfNoProxydon't use proxy
TUrlfProxyproxy URL
Long64_tfSizefile size
TSocket*fSocketsocket for HTTP/1.1 (stays alive between calls)
TUrlfUrlOrgsave original url in case of temp redirection
static TUrlfgProxyglobally set proxy URL

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TWebFile(const char* url, Option_t* opt = "")
 Create a Web file object. A web file is the same as a read-only
 TFile except that it is being read via a HTTP server. The url
 argument must be of the form: http://host.dom.ain/file.root.
 The opt can be "NOPROXY", to bypass any set "http_proxy" shell
 variable. The proxy can be specified as (in sh, or equivalent csh):
   export http_proxy=http://pcsalo.cern.ch:3128
 The proxy can also be specified via the static method TWebFile::SetProxy().
 Basic authentication (AuthType Basic) is supported. The user name and
 passwd can be specified in the url like this:
   http://username:mypasswd@pcsalo.cern.ch/files/aap.root
 If the file specified in the URL does not exist or is not accessible
 the kZombie bit will be set in the TWebFile object. Use IsZombie()
 to see if the file is accessible. The preferred interface to this
 constructor is via TFile::Open().
TWebFile(TUrl url, Option_t* opt = "")
 Create a Web file object. A web file is the same as a read-only
 TFile except that it is being read via a HTTP server. Make sure url
 is a valid TUrl object.
 The opt can be "NOPROXY", to bypass any set "http_proxy" shell
 variable. The proxy can be specified as (in sh, or equivalent csh):
   export http_proxy=http://pcsalo.cern.ch:3128
 The proxy can also be specified via the static method TWebFile::SetProxy().
 Basic authentication (AuthType Basic) is supported. The user name and
 passwd can be specified in the url like this:
   http://username:mypasswd@pcsalo.cern.ch/files/aap.root
 If the file specified in the URL does not exist or is not accessible
 the kZombie bit will be set in the TWebFile object. Use IsZombie()
 to see if the file is accessible.
~TWebFile()
 Cleanup.
void Init(Bool_t readHeadOnly)
 Initialize a TWebFile object.
void SetMsgReadBuffer10(const char* redirectLocation = 0, Bool_t tempRedirect = kFALSE)
 Set GET command for use by ReadBuffer(s)10(), handle redirection if
 needed. Give full URL so Apache's virtual hosts solution works.
void CheckProxy()
 Check if shell var "http_proxy" has been set and should be used.
Bool_t IsOpen() const
 A TWebFile that has been correctly constructed is always considered open.
Int_t ReOpen(Option_t* mode)
 Reopen a file with a different access mode, like from READ to
 UPDATE or from NEW, CREATE, RECREATE, UPDATE to READ. Thus the
 mode argument can be either "READ" or "UPDATE". The method returns
 0 in case the mode was successfully modified, 1 in case the mode
 did not change (was already as requested or wrong input arguments)
 and -1 in case of failure, in which case the file cannot be used
 anymore. A TWebFile cannot be reopened in update mode.
Bool_t ReadBuffer(char* buf, Int_t len)
 Read specified byte range from remote file via HTTP daemon. This
 routine connects to the remote host, sends the request and returns
 the buffer. Returns kTRUE in case of error.
Bool_t ReadBuffer(char* buf, Long64_t pos, Int_t len)
 Read specified byte range from remote file via HTTP daemon. This
 routine connects to the remote host, sends the request and returns
 the buffer. Returns kTRUE in case of error.
Bool_t ReadBuffer10(char* buf, Int_t len)
 Read specified byte range from remote file via HTTP 1.0 daemon (without
 mod-root installed). This routine connects to the remote host, sends the
 request and returns the buffer. Returns kTRUE in case of error.
Bool_t ReadBuffers(char* buf, Long64_t* pos, Int_t* len, Int_t nbuf)
 Read specified byte ranges from remote file via HTTP daemon.
 Reads the nbuf blocks described in arrays pos and len,
 where pos[i] is the seek position of block i of length len[i].
 Note that for nbuf=1, this call is equivalent to TFile::ReafBuffer
 This function is overloaded by TNetFile, TWebFile, etc.
 Returns kTRUE in case of failure.
Bool_t ReadBuffers10(char* buf, Long64_t* pos, Int_t* len, Int_t nbuf)
 Read specified byte ranges from remote file via HTTP 1.0 daemon (without
 mod-root installed). Read the nbuf blocks described in arrays pos and len,
 where pos[i] is the seek position of block i of length len[i].
 Note that for nbuf=1, this call is equivalent to TFile::ReafBuffer
 This function is overloaded by TNetFile, TWebFile, etc.
 Returns kTRUE in case of failure.
Int_t GetFromWeb(char* buf, Int_t len, const TString& msg)
 Read request from web server. Returns -1 in case of error,
 0 in case of success.
Int_t GetFromWeb10(char* buf, Int_t len, const TString& msg)
 Read multiple byte range request from web server.
 Uses HTTP 1.0 daemon wihtout mod-root.
 Returns -2 in case file does not exist, -1 in case
 of error and 0 in case of success.
void Seek(Long64_t offset, TFile::ERelativeTo pos = kBeg)
 Set position from where to start reading.
Long64_t GetSize() const
 Return maximum file size.
Int_t GetHead()
 Get the HTTP header. Depending on the return code we can see if
 the file exists and if the server uses mod_root.
 Returns -1 in case of an error, -2 in case the file does not exists,
 -3 in case HEAD is not supported (dCache HTTP door) and
 0 in case of success.
Int_t GetLine(TSocket* s, char* line, Int_t maxsize)
 Read a line from the socket. Reads at most one less than the number of
 characters specified by maxsize. Reading stops when a newline character
 is found, The newline (\n) and cr (\r), if any, are removed.
 Returns -1 in case of error, or the number of characters read (>= 0)
 otherwise.
Int_t GetHunk(TSocket* s, char* hunk, Int_t maxsize)
 Read a hunk of data from the socket, up until a terminator. The hunk is
 limited by whatever the TERMINATOR callback chooses as its
 terminator. For example, if terminator stops at newline, the hunk
 will consist of a line of data; if terminator stops at two
 newlines, it can be used to read the head of an HTTP response.
 Upon determining the boundary, the function returns the data (up to
 the terminator) in hunk.

 In case of read error, -1 is returned. In case of having read some
 data, but encountering EOF before seeing the terminator, the data
 that has been read is returned, but it will (obviously) not contain the
 terminator.

 The TERMINATOR function is called with three arguments: the
 beginning of the data read so far, the beginning of the current
 block of peeked-at data, and the length of the current block.
 Depending on its needs, the function is free to choose whether to
 analyze all data or just the newly arrived data. If TERMINATOR
 returns 0, it means that the terminator has not been seen.
 Otherwise it should return a pointer to the character immediately
 following the terminator.

 The idea is to be able to read a line of input, or otherwise a hunk
 of text, such as the head of an HTTP request, without crossing the
 boundary, so that the next call to RecvRaw() etc. reads the data
 after the hunk. To achieve that, this function does the following:

 1. Peek at incoming data.

 2. Determine whether the peeked data, along with the previously
    read data, includes the terminator.

 3a. If yes, read the data until the end of the terminator, and
     exit.

 3b. If no, read the peeked data and goto 1.

 The function is careful to assume as little as possible about the
 implementation of peeking.  For example, every peek is followed by
 a read. If the read returns a different amount of data, the
 process is retried until all data arrives safely.

 Reads at most one less than the number of characters specified by maxsize.
const char * HttpTerminator(const char* start, const char* peeked, Int_t peeklen)
 Determine whether [START, PEEKED + PEEKLEN) contains an HTTP new
 line [\r]\n. If so, return the pointer to the position after the line,
 otherwise return 0. This is used as callback to GetHunk(). The data
 between START and PEEKED has been read and cannot be "unread"; the
 data after PEEKED has only been peeked.
TString BasicAuthentication()
 Return basic authentication scheme, to be added to the request.
void SetProxy(const char* url)
 Static method setting global proxy URL.
const char * GetProxy()
 Static method returning the global proxy URL.
TWebFile()
{ }