library: libRFIO #include "TRFIOFile.h"

# TRFIOFile

class description - source file - inheritance tree (.pdf)

## class TRFIOFile : public TFile

| Inheritance Chart:
`TObject`
| <- | `TNamed`
| <- | `TDirectory`
| <- | `TFile`
| <- | `TRFIOFile` |

        private:

                           TRFIOFile()
             virtual Int_t SysClose(Int_t fd)
             virtual Int_t SysOpen(const char* pathname, Int_t flags, UInt_t mode)
             virtual Int_t SysRead(Int_t fd, void* buf, Int_t len)
          virtual Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence)
             virtual Int_t SysStat(Int_t fd, Long_t* id, Long64_t* size, Long_t* flags, Long_t* modtime)
             virtual Int_t SysSync(Int_t)
             virtual Int_t SysWrite(Int_t fd, const void* buf, Int_t len)

        public:

                          TRFIOFile(const char* url, Option_t* option = "", const char* ftitle = "", Int_t compress = 1)
                          ~TRFIOFile()
           static TClass* Class()
            virtual Int_t GetErrno() const
          virtual TClass* IsA() const
           virtual Bool_t ReadBuffer(char* buf, Int_t len)
             virtual void ResetErrno() const
             virtual void ShowMembers(TMemberInspector& insp, char* parent)
             virtual void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)
           virtual Bool_t WriteBuffer(const char* buf, Int_t len)

### Data Members

        private:

          TUrl fUrl  URL of file

## Class Description

     TRFIOFile

     A TRFIOFile is like a normal TFile except that it reads and writes
     its data via a rfiod server (for more on the rfiod daemon see
     http://wwwinfo.cern.ch/pdp/serv/shift.html). TRFIOFile file names
     are in standard URL format with protocol "rfio". The following are
     valid TRFIOFile URL's:

        rfio:/afs/cern.ch/user/r/rdm/galice.root
             where galice.root is a symlink of the type /shift/.../...
        rfio:na49db1:/data1/raw.root

TRFIOFile(const char *url, Option_t *option, const char *ftitle, Int_t compress) : TFile(url, "NET", ftitle, compress), fUrl(url)

     Create a RFIO file object. A RFIO file is the same as a TFile
     except that it is being accessed via a rfiod server. The url
     argument must be of the form: rfio:/path/file.root (where file.root
     is a symlink of type /shift/aaa/bbb/ccc) or rfio:server:/path/file.root.
     If the file specified in the URL does not exist, is not accessable
     or can not be created the kZombie bit will be set in the TRFIOFile
     object. Use IsZombie() to see if the file is accessable.
     For a description of the option and other arguments see the TFile ctor.
     The preferred interface to this constructor is via TFile::Open().

~TRFIOFile()

     RFIO file dtor. Close and flush directory structure.

Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode)

     Interface to system open. All arguments like in POSIX open.

Int_t SysClose(Int_t fd)

     Interface to system close. All arguments like in POSIX close.

Int_t SysRead(Int_t fd, void *buf, Int_t len)

     Interface to system read. All arguments like in POSIX read.

Int_t SysWrite(Int_t fd, const void *buf, Int_t len)

     Interface to system write. All arguments like in POSIX write.

Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence)

     Interface to system lseek. All arguments like in POSIX lseek
     except that the offset and return value are Long_t to be able to
     handle 64 bit file systems.

Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)

     Interface to TSystem:GetPathInfo(). Generally implemented via
     stat() or fstat().

Bool_t ReadBuffer(char *buf, Int_t len)

     Read specified byte range from remote file via rfiod daemon.
     Returns kTRUE in case of error.

Bool_t WriteBuffer(const char *buf, Int_t len)

     Write specified byte range to remote file via rfiod daemon.
     Returns kTRUE in case of error.

Int_t GetErrno() const

     Method returning rfio_errno. For RFIO files must use this
     function since we need to check rfio_errno then serrno and finally errno.

void ResetErrno() const

     Method resetting the rfio_errno, serrno and errno.

### Inline Functions

                  Int_t SysSync(Int_t)
              TRFIOFile TRFIOFile(const char* url, Option_t* option = "", const char* ftitle = "", Int_t compress = 1)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void Streamer(TBuffer& b)
                   void StreamerNVirtual(TBuffer& b)

Author: Fons Rademakers 20/01/99
Last update: root/rfio:$Name: $:$Id: TRFIOFile.cxx,v 1.32 2005/02/28 17:28:12 rdm Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *