library: libNetx #include "TXNetFile.h" |
TXNetFile
class description - source file - inheritance tree (.pdf)
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)
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
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.