library: libNetx
#include "TXNetFile.h"

TXNetFile


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

class TXNetFile : public TNetFile, public TXAbsNetCommon

Inheritance Chart:
TObject
<-
TNamed
<-
TDirectory
<-
TFile
<-
TNetFile
TXAbsUnsolicitedMsgHandler
<-
TXAbsNetCommon
<-
TXNetFile
    private:
void CreateTXNf(const char* url, Option_t* option, const char* ftitle, Int_t compress, Int_t netopt) Bool_t LowOpen(const char* file, Option_t* option, const char* ftitle, Int_t compress, Int_t netopt, Bool_t DoInit, Bool_t refresh_open = kFALSE) virtual Int_t SysClose(Int_t fd) virtual Int_t SysOpen(const char* pathname, Int_t flags, UInt_t mode) virtual Int_t SysStat(Int_t fd, Long_t* id, Long64_t* size, Long_t* flags, Long_t* modtime) public:
TXNetFile(const char* url, Option_t* option, const char* fTitle, Int_t compress = 1, Int_t netopt = -1) virtual ~TXNetFile() static TClass* Class() virtual void Close(Option_t* opt) virtual void Flush() virtual Long_t GetRemoteFile(void**) virtual TClass* IsA() const virtual Bool_t IsOpen() const Int_t LastBytesRecv() Int_t LastBytesSent() Int_t LastDataBytesRecv() Int_t LastDataBytesSent() Bool_t Open(Option_t* option, const char* fTitle, Int_t compress, Int_t netopt, Bool_t DoInit) virtual Bool_t OpenFileWhenRedirected(char* newfhandle, Bool_t& wasopen) virtual Bool_t ProcessUnsolicitedMsg(TXUnsolicitedMsgSender* sender, TXMessage* unsolmsg) virtual Bool_t ReadBuffer(char* buf, Int_t len) virtual Int_t ReOpen(Option_t* mode) virtual void ShowMembers(TMemberInspector& insp, char* parent) Long64_t Size() virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) virtual Bool_t WriteBuffer(const char* buffer, Int_t BufferLength)

Data Members

    private:
Bool_t fAlreadyStated Bool_t fAlreadyDetected TXNetConn* fConnModule Bool_t fCreateMode char fHandle[4] The file handle returned by the server, Bool_t fIsROOT Params_Open fOpenPars Just a container for the last parameters Bool_t fOpenWithRefresh Long64_t fSize static Bool_t fgTagAlreadyPrinted

Class Description


TXNetFile(const char *url, Option_t *option, const char* ftitle, Int_t compress, Int_t netopt) : TNetFile(url, ftitle, compress, kFALSE)
 Create a TXNetFile object. A TXNetFile object is the same as a TNetFile
 (from which the former derives) except that the protocol is extended to
 support dealing with new xrootd data server or xrootd load balancer
 server.

 The "url" argument must be of the form

   root://server1:port1[,server2:port2,...,serverN:portN]/pathfile,

 Note that this means that multiple servers (>= 1) can be specified in
 the url. The connection will try to connect to the first server:port
 and if that does not succeed, it will try the second one, and so on
 until it finds a server that will respond.

 See the TNetFile documentation for the description of the other arguments.

 The creation consists of internal variable settings (most important is
 the client's domain), creation of a TXUrl array containing all specified
 urls (a single url is serverX:portX/pathfile), trying to connect to the
 servers calling Connect() method, getting a valid access to the remote
 server the client is connected to using GetAccessToSrv() method,
 recognizing the remote server (if an old rootd the TNetFile's Create
 method will be called)

~TXNetFile()
 Destructor

void CreateTXNf(const char *url, Option_t *option, const char* ftitle, Int_t compress, Int_t netopt)

Bool_t ReadBuffer(char *buffer, Int_t BufferLength)
 Override TNetFile::ReadBuffer to deal with the xrootd server.
 Returns kTRUE in case of errors.

Bool_t WriteBuffer(const char *buffer, Int_t BufferLength)
 Override TNetFile::WriteBuffer to deal with the xrootd server.
 Returns kTRUE in case of errors.

Bool_t IsOpen() const
 Return kTRUE if the file is open, kFALSE otherwise

Int_t ReOpen(const Option_t *Mode)
 Re-open the file (see TNetFile::ReOpen() or TFile::ReOpen()
 for more details)

void Close(const Option_t *opt)
 Close the file (see TNetFile::Close() or TFile::Close()
 for more details)

void Flush()
 Flushes un-written data

Bool_t Open(Option_t *option, const char* ftitle, Int_t compress, Int_t netopt, Bool_t DoInit)
 High level open routine; if the remote server is an old rootd the file
 has been already opened by the TNetFile's Create() method

Bool_t LowOpen(const char* file, Option_t *option, const char* title, Int_t compress, Int_t netopt, Bool_t DoInit, Bool_t refresh_open)
 Low level Open method; deals with xrootd server

Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
 Override TNetFile::SysStat (see parent's method for more details)

Int_t SysClose(Int_t fd)
 Override TNetFile::SysClose (see parent's method for more details)

Int_t SysOpen(const char* pathname, Int_t flags, UInt_t mode)
 Override TNetFile::SysOpen (see parent's method for more details)

void Streamer(TBuffer &R__b)
 Stream an object of class TXNetFile.
 Dummy Streamer: rootcint chokes trying to generate one, but ROOT wants
 one to load the shared library.

Bool_t OpenFileWhenRedirected(char *newfhandle, Bool_t &wasopen)
 Called by the comm module when it needs to reopen a file
 after a redir

Long_t GetRemoteFile(void **bufFile)
 Retrieve a remote file a store it in memory

Bool_t ProcessUnsolicitedMsg(TXUnsolicitedMsgSender *, TXMessage *)
 We are here if an unsolicited response comes from a logical conn
 The response comes in the form of an TXMessage *, that must NOT be
 destroyed after processing. It is destroyed by the first sender.
 Remember that we are in a separate thread, since unsolicited
 responses are asynchronous by nature.

Int_t LastBytesSent(void)
 Return number of bytes last sent

Int_t LastBytesRecv(void)
 Return number of bytes last received

Int_t LastDataBytesSent(void)
 Return number of data bytes last sent

Int_t LastDataBytesRecv(void)
 Return number of data bytes last received

Long64_t Size(void)
 Return file size



Inline Functions


            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void StreamerNVirtual(TBuffer& b)


Author: Alvise Dorigo, Fabrizio Furano
Last update: root/netx:$Name: $:$Id: TXNetFile.cxx,v 1.8 2005/05/01 10:00:07 rdm Exp $
Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.