library: libCore #include "TNetFile.h" |
TNetFile
class description - header file - source file - inheritance tree (.pdf)
protected:
TNetFile(const TNetFile&)
TNetFile(const char* url, const char* ftitle, Int_t comp, Bool_t)
virtual void ConnectServer(Int_t* stat, EMessageTypes* kind, Int_t netopt, Int_t tcpwindowsize, Bool_t forceOpen, Bool_t forceRead)
virtual void Create(const char* url, Option_t* option, Int_t netopt)
virtual void Create(TSocket* s, Option_t* option, Int_t netopt)
virtual void Init(Bool_t create)
TNetFile& operator=(const TNetFile&)
virtual void Print(Option_t* option) const
void PrintError(const char* where, Int_t err)
Int_t Recv(Int_t& status, EMessageTypes& kind)
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:
TNetFile(const char* url, Option_t* option = "", const char* ftitle = "", Int_t compress = 1, Int_t netopt = 0)
TNetFile()
virtual ~TNetFile()
static TClass* Class()
virtual void Close(Option_t* option = "")
virtual void Flush()
virtual const TUrl* GetEndpointUrl() const
Int_t GetErrorCode() const
virtual TClass* IsA() const
virtual Bool_t IsOpen() const
virtual Bool_t Matches(const char* url)
virtual Bool_t ReadBuffer(char* buf, Int_t len)
virtual Bool_t ReadBuffers(char* buf, Long64_t* pos, Int_t* len, Int_t nbuf)
virtual Int_t ReOpen(Option_t* mode)
virtual void Seek(Long64_t offset, TFile::ERelativeTo pos = kBeg)
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)
protected:
TUrl fEndpointUrl URL of realfile (after possible redirection)
TString fUser remote user name
TSocket* fSocket connection to rootd server
Int_t fProtocol rootd protocol level
Int_t fErrorCode error code returned by rootd (matching gRootdErrStr)
TNetFile
A TNetFile is like a normal TFile except that it reads and writes
its data via a rootd server (for more on the rootd daemon see the
source files root/rootd/src/*.cxx). TNetFile file names are in
standard URL format with protocol "root" or "roots". The following
are valid TNetFile URL's:
roots://hpsalo/files/aap.root
root://hpbrun.cern.ch/root/hsimple.root
root://pcna49a:5151/~na49/data/run821.root
root://pcna49d.cern.ch:5050//v1/data/run810.root
The only difference with the well known httpd URL's is that the root
of the remote file tree is the user's home directory. Therefore an
absolute pathname requires a // after the host or port specifier
(see last example). Further the expansion of the standard shell
characters, like ~, $, .., are handled as expected.
TNetFile (actually TUrl) uses 1094 as default port for rootd.
Connecting to a rootd requires the remote user id and password.
TNetFile allows three ways for you to provide your login:
1) Setting it globally via the static functions:
TAuthenticate::SetGlobalUser() and
TAuthenticate::SetGlobalPasswd()
2) Getting it from the ~/.netrc file (same file as used by ftp)
3) Command line prompt
The different methods will be tried in the order given above.
On machines with AFS rootd will authenticate using AFS (if it was
compiled with AFS support).
If the protocol is specified as "roots" a secure authetication
method will be used. The secure method uses the SRP, Secure Remote
Passwords, package. SRP uses a so called "asymmetric key exchange //
protocol" in which no passwords are ever send over the wire. This //
protocol is safe against all known security attacks. For more see:
NetFile //
If the protocol is specified as "rootk" kerberos5 will be used for
authentication.
The rootd daemon lives in the directory $ROOTSYS/bin. It can be
started either via inetd or by hand from the command line (no need
to be super user). For more info about rootd see the web page:
NetFile //
TNetFile(const char *url, const char *ftitle, Int_t compress, Bool_t)
Create a TNetFile object. To be used by derived classes, that need
to initialize the TFile base class but not open a connection at this
moment.
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.
Int_t Recv(Int_t &status, EMessageTypes &kind)
Return status from rootd server and message kind. Returns -1 in
case of error otherwise 8 (sizeof 2 words, status and kind).
void Seek(Long64_t offset, ERelativeTo pos)
Set position from where to start reading.
Bool_t Matches(const char *url)
Return kTRUE if 'url' matches the coordinates of this file.
Check the full URL, including port and FQDN.
Author: Fons Rademakers 14/08/97
Last update: root/net:$Name: $:$Id: TNetFile.cxx,v 1.81 2006/07/10 14:31:28 brun Exp $
Copyright (C) 1995-2000, 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.