28#include <XrdCl/XrdClURL.hh> 
   29#include <XrdCl/XrdClFile.hh> 
   30#include <XrdCl/XrdClXRootDResponses.hh> 
   31#include <XrdCl/XrdClDefaultEnv.hh> 
   32#include <XrdCl/XrdClFileSystem.hh> 
   33#include <XrdVersion.hh> 
   64                          XrdCl::AnyObject    *response)
 override 
 
 
  106                          XrdCl::AnyObject    *response)
 override 
 
 
  127     fInitCondVar(nullptr),
 
 
  154           strstr(
mode, 
"_WITHOUT_GLOBALREGISTRATION") != nullptr ? 
"NET_WITHOUT_GLOBALREGISTRATION" : 
"NET", title,
 
  157   using namespace XrdCl;
 
  162   if (!val.
IsNull()) XrdCl::DefaultEnv::SetLogLevel(val.
Data());
 
  175   fUrl->SetProtocol(std::string(
"root"));
 
  181      Error(
"Open", 
"could not parse open mode %s", 
mode);
 
  203      status = 
fFile->Open(
fUrl->GetURL(), 
static_cast<XrdCl::OpenFlags::Flags
>(
fMode), Access::None, handler);
 
  204      if (!status.IsOK()) {
 
  205         Error(
"Open", 
"%s", status.ToStr().c_str());
 
  212   status = 
fFile->Open(
fUrl->GetURL(), 
static_cast<XrdCl::OpenFlags::Flags
>(
fMode));
 
  213   if (!status.IsOK()) {
 
  214#if XrdVNUMBER >= 40000 
  216         fNewUrl = status.GetErrorMessage().c_str();
 
  218         Error(
"Open", 
"%s", status.ToStr().c_str());
 
  220      Error(
"Open", 
"%s", status.ToStr().c_str());
 
  226   if( (
fMode & OpenFlags::New) || (
fMode & OpenFlags::Delete) ||
 
  227       (
fMode & OpenFlags::Update) )
 
  232   if( (
fMode & OpenFlags::New) || (
fMode & OpenFlags::Delete) )
 
 
  257   using namespace XrdCl;
 
  260      if (
gDebug > 1) 
Info(
"Init", 
"TFile::Init already called once");
 
 
  296   using namespace XrdCl;
 
  303   if( 
fMode == XrdCl::OpenFlags::Read )
 
 
  344   XrdCl::XRootDStatus status = 
fFile->Close();
 
  345   if (!status.IsOK()) {
 
  346      Error(
"Close", 
"%s", status.ToStr().c_str());
 
 
  364   using namespace XrdCl;
 
  372      Error(
"ReOpen", 
"mode must be either READ or UPDATE, not %s", 
modestr);
 
  378                         && 
fMode == OpenFlags::New)) {
 
  384      Error(
"ReOpen", 
"%s", 
st.ToStr().c_str());
 
  390   st = 
fFile->Open(
fUrl->GetURL(), 
static_cast<XrdCl::OpenFlags::Flags
>(
fMode));
 
  392      Error(
"ReOpen", 
"%s", 
st.ToStr().c_str());
 
 
  421   using namespace XrdCl;
 
  423      Info(
"ReadBuffer", 
"offset: %lld length: %d", position, 
length);
 
  445      Info(
"ReadBuffer", 
"%s bytes read: %u", 
st.ToStr().c_str(), 
bytesRead);
 
  448      Error(
"ReadBuffer", 
"%s", 
st.ToStr().c_str());
 
  453      Error(
"ReadBuffer", 
"error reading all requested bytes, got %u of %d",
 
 
  489   using namespace XrdCl;
 
  497   std::vector<XRootDStatus*> *
statuses;
 
  557   std::vector<ChunkList>::iterator it;
 
  562      status = 
fFile->VectorRead(*it, 0, handler);
 
  564      if (!status.IsOK()) {
 
  565         Error(
"ReadBuffers", 
"%s", status.ToStr().c_str());
 
  580         Error(
"ReadBuffers", 
"%s", 
st->ToStr().c_str());
 
 
  622   using namespace XrdCl;
 
  630         Info(
"WriteBuffer", 
"file not writable");
 
  645      Error(
"WriteBuffer", 
"%s", 
st.ToStr().c_str());
 
 
  666         Info(
"Flush", 
"file not writable - do nothing");
 
  674   XrdCl::XRootDStatus status = 
fFile->Sync();
 
  676      Error(
"Flush", 
"%s", status.ToStr().c_str());
 
  679      Info(
"Flush", 
"XrdClient::Sync succeeded.");
 
 
  708   using namespace XrdCl;
 
  712   else if (
modestr == 
"RECREATE")               
mode = OpenFlags::Delete;
 
  713   else if (
modestr == 
"UPDATE")                 
mode = OpenFlags::Update;
 
  714   else if (
modestr == 
"READ")                   
mode = OpenFlags::Read;
 
  720      mode = OpenFlags::Read;
 
  734      Error(
"TNetXNGFile", 
"Object is in 'zombie' state");
 
  739      Error(
"TNetXNGFile", 
"The remote file is not open");
 
 
  752   using namespace XrdCl;
 
  761#if XrdVNUMBER >= 40000 
  767   if(
lrl.GetProtocol().compare(
"file") == 0 &&
 
  768      lrl.GetHostId().compare(
"localhost") == 0){
 
  770          Info(
"GetVectorReadLimits",
"Local redirect, using default values");
 
  784   arg.FromString(std::string(
"readv_ior_max readv_iov_max"));
 
  793   std::vector<TString> 
resps;
 
  795      resps.push_back(token);
 
  797   if (
resps.size() != 2)
 
  800   if (
resps[0].IsDigit())
 
  803   if (
resps[1].IsDigit())
 
 
  824   XrdCl::Env *
env  = XrdCl::DefaultEnv::GetEnv();
 
  825   const char *
cenv = 0;
 
  831      env->PutInt(
"ConnectionWindow", val.
Atoi());
 
  836      env->PutInt(
"RequestTimeout", val.
Atoi());
 
  841      env->PutInt(
"RequestTimeout", val.
Atoi());
 
  843   val = 
gEnv->
GetValue(
"NetXNG.SubStreamsPerChannel", 
"");
 
  846      env->PutInt(
"SubStreamsPerChannel", val.
Atoi());
 
  851      env->PutInt(
"TimeoutResolution", val.
Atoi());
 
  856      env->PutInt(
"StreamErrorWindow", val.
Atoi());
 
  861      env->PutInt(
"RunForkHandler", val.
Atoi());
 
  866      env->PutInt(
"RedirectLimit", val.
Atoi());
 
  871      env->PutInt(
"WorkerThreads", val.
Atoi());
 
  876      env->PutInt(
"CPChunkSize", val.
Atoi());
 
  881      env->PutInt(
"CPParallelChunks", val.
Atoi());
 
  886      env->PutString(
"PollerPreference", val.
Data());
 
  891      env->PutString(
"ClientMonitor", val.
Data());
 
  896      env->PutString(
"ClientMonitorParam", val.
Data());
 
  899   env->PutInt( 
"MultiProtocol", 
gEnv->
GetValue(
"TFile.CrossProtocolRedirects", 1));
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
bool Bool_t
Boolean (0=false, 1=true) (bool)
 
int Int_t
Signed integer 4 bytes (int)
 
long long Long64_t
Portable signed long integer 8 bytes.
 
const char Option_t
Option string (const char)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t cursor
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
 
Option_t Option_t TPoint TPoint const char mode
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize fs
 
Int_t gDebug
Global variable setting the debug level. Set to 0 to disable, increase it in steps of 1 to increase t...
 
TString ToUpper(const TString &s)
Return an upper-case version of str.
 
R__EXTERN TSystem * gSystem
 
R__EXTERN TVirtualMonitoringWriter * gMonitoringWriter
 
const_iterator begin() const
 
const_iterator end() const
 
TArchiveMember * GetMember() const
 
Long64_t GetDecompressedSize() const
 
void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response) override
 
TAsyncOpenHandler(TNetXNGFile *file)
 
std::vector< XrdCl::XRootDStatus * > * fStatuses
 
TAsyncReadvHandler(std::vector< XrdCl::XRootDStatus * > *statuses, Int_t statusIndex, TSemaphore *semaphore)
 
void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response) override
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
Bool_t fWritable
True if directory is writable.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
static std::atomic< Long64_t > fgBytesRead
Number of bytes read by all TFile objects.
 
Int_t fReadCalls
Number of read calls ( not counting the cache calls )
 
Long64_t fBytesRead
Number of bytes read from this file.
 
TArchiveFile * fArchive
!Archive file from which we read this file
 
TList * fOpenPhases
!Time info about open phases
 
Int_t WriteBufferViaCache(const char *buf, Int_t len)
Write buffer via cache.
 
Int_t ReadBufferViaCache(char *buf, Int_t len)
Read buffer via cache.
 
Long64_t fArchiveOffset
!Offset at which file starts in archive
 
virtual void Init(Bool_t create)
Initialize a TFile object.
 
Long64_t GetRelOffset() const
 
TString fOption
File options.
 
EAsyncOpenStatus
Asynchronous open request status.
 
Bool_t FlushWriteCache()
Flush the write cache if active.
 
Long64_t fBytesWrite
Number of bytes written to this file.
 
Bool_t fInitDone
!True if the file has been initialized
 
virtual void SetOffset(Long64_t offset, ERelativeTo pos=kBeg)
Set position from where to start reading.
 
Long64_t fOffset
!Seek offset cache
 
static std::atomic< Long64_t > fgBytesWrite
Number of bytes written by all TFile objects.
 
EAsyncOpenStatus fAsyncOpenStatus
!Status of an asynchronous open request
 
void Close(Option_t *option="") override
Close a file.
 
static std::atomic< Int_t > fgReadCalls
Number of bytes read from all TFile objects.
 
Enables access to XRootD files using the new client.
 
void Seek(Long64_t offset, ERelativeTo position=kBeg) override
Set the position within the file.
 
virtual void SetEnv()
Map ROOT and xrootd environment variables.
 
virtual Bool_t IsUseable() const
Check the file is open and isn't a zombie.
 
virtual void SetAsyncOpenStatus(EAsyncOpenStatus status)
Set the status of an asynchronous file open.
 
Bool_t ReadBuffer(char *buffer, Int_t length) override
Read a data chunk of the given size.
 
void Close(const Option_t *option="") override
Close the file.
 
Bool_t ReadBuffers(char *buffer, Long64_t *position, Int_t *length, Int_t nbuffs) override
Read scattered data chunks in one operation.
 
void Flush() override
Synchronize a file's in-memory and on-disk states.
 
Bool_t WriteBuffer(const char *buffer, Int_t length) override
Write a data chunk.
 
Int_t ReOpen(Option_t *modestr) override
Reopen the file with the new access mode.
 
XrdSysCondVar * fInitCondVar
 
Long64_t GetSize() const override
Get the file size.
 
virtual ~TNetXNGFile()
Destructor.
 
void Init(Bool_t create) override
Initialize the file.
 
virtual Bool_t GetVectorReadLimits()
Find the server-specific readv config params.
 
Bool_t IsOpen() const override
Check if the file is open.
 
R__ALWAYS_INLINE Bool_t IsZombie() const
 
Int_t Post()
Increment the value of the semaphore.
 
Int_t Atoi() const
Return integer value of string.
 
const char * Data() const
 
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
virtual void Setenv(const char *name, const char *value)
Set environment variable.
 
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
 
The TTimeStamp encapsulates seconds and ns since EPOCH.
 
This class represents a WWW compatible URL.
 
virtual Bool_t SendFileOpenProgress(TFile *, TList *, const char *, Bool_t=kFALSE)
 
virtual Bool_t SendFileReadProgress(TFile *)