ROOT  6.06/09
Reference Guide
TNetXNGFile.h
Go to the documentation of this file.
1 // @(#)root/netxng:$Id$
2 /*************************************************************************
3  * Copyright (C) 1995-2013, Rene Brun and Fons Rademakers. *
4  * All rights reserved. *
5  * *
6  * For the licensing terms see $ROOTSYS/LICENSE. *
7  * For the list of contributors see $ROOTSYS/README/CREDITS. *
8  *************************************************************************/
9 
10 #ifndef ROOT_TNetXNGFile
11 #define ROOT_TNetXNGFile
12 
13 ////////////////////////////////////////////////////////////////////////////////
14 // //
15 // TNetXNGFile //
16 // //
17 // Authors: Justin Salmon, Lukasz Janyst //
18 // CERN, 2013 //
19 // //
20 // Enables access to XRootD files using the new client. //
21 // //
22 ////////////////////////////////////////////////////////////////////////////////
23 
24 #include "TFile.h"
25 #include "TSemaphore.h"
26 #ifndef __CLING__
27 #include <XrdCl/XrdClFileSystem.hh>
28 #endif
29 
30 namespace XrdCl {
31  class File;
32  class URL;
33 }
34 class XrdSysCondVar;
35 
36 #ifdef __CLING__
37 namespace XrdCl {
38  struct OpenFlags {
39  enum Flags {None = 0};
40  };
41 }
42 #endif
43 
44 class TNetXNGFile: public TFile {
45 private:
46  XrdCl::File *fFile; // Underlying XRootD file
47  XrdCl::URL *fUrl; // URL of the current file
48  XrdCl::OpenFlags::Flags fMode; // Open mode of the current file
49  XrdSysCondVar *fInitCondVar; // Used to block an async open request
50  // if requested
51  Int_t fReadvIorMax; // Max size of a single readv chunk
52  Int_t fReadvIovMax; // Max number of readv chunks
55 
56 public:
58  fFile(0), fUrl(0), fMode(XrdCl::OpenFlags::None), fInitCondVar(0),
59  fReadvIorMax(0), fReadvIovMax(0) {}
60  TNetXNGFile(const char *url, Option_t *mode = "", const char *title = "",
61  Int_t compress = 1, Int_t netopt = 0, Bool_t parallelopen = kFALSE);
62  virtual ~TNetXNGFile();
63 
64  virtual void Init(Bool_t create);
65  virtual void Close(const Option_t *option = "");
66  virtual void Seek(Long64_t offset, ERelativeTo position = kBeg);
68  virtual Long64_t GetSize() const;
69  virtual Int_t ReOpen(Option_t *modestr);
70  virtual Bool_t IsOpen() const;
71  virtual Bool_t WriteBuffer(const char *buffer, Int_t length);
72  virtual void Flush();
73  virtual Bool_t ReadBuffer(char *buffer, Int_t length);
74  virtual Bool_t ReadBuffer(char *buffer, Long64_t position, Int_t length);
75  virtual Bool_t ReadBuffers(char *buffer, Long64_t *position, Int_t *length,
76  Int_t nbuffs);
77  virtual TString GetNewUrl() { return fNewUrl; }
78 
79 private:
80  virtual Bool_t IsUseable() const;
81  virtual Bool_t GetVectorReadLimits();
82  virtual void SetEnv();
83  Int_t ParseOpenMode(Option_t *in, TString &modestr,
84  XrdCl::OpenFlags::Flags &mode, Bool_t assumeRead);
85 
86  TNetXNGFile(const TNetXNGFile &other); // Not implemented
87  TNetXNGFile &operator =(const TNetXNGFile &other); // Not implemented
88 
89  ClassDef(TNetXNGFile, 0) // ROOT class definition
90 };
91 
92 #endif // ROOT_TNetXNGFile
virtual Long64_t GetSize() const
Get the file size.
long long Long64_t
Definition: RtypesCore.h:69
virtual Bool_t WriteBuffer(const char *buffer, Int_t length)
Write a data chunk.
virtual void Init(Bool_t create)
Initialize the file.
EAsyncOpenStatus
Asynchronous open request status.
Definition: TFile.h:51
const char Option_t
Definition: RtypesCore.h:62
virtual void SetEnv()
Map ROOT and xrootd environment variables.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:45
virtual Bool_t IsUseable() const
Check the file is open and isn't a zombie.
Basic string class.
Definition: TString.h:137
TAlienJobStatus * status
Definition: TAlienJob.cxx:51
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
ERelativeTo
Definition: TFile.h:160
virtual void Close(const Option_t *option="")
Close the file.
Int_t fReadvIorMax
Definition: TNetXNGFile.h:51
#define ClassDef(name, id)
Definition: Rtypes.h:254
XrdCl::File * fFile
Definition: TNetXNGFile.h:46
#define None
Definition: TGWin32.h:68
Double_t length(const TVector2 &v)
Definition: CsgOps.cxx:347
Int_t fReadvIovMax
Definition: TNetXNGFile.h:52
virtual ~TNetXNGFile()
Destructor.
virtual Int_t ReOpen(Option_t *modestr)
Reopen the file with the new access mode.
virtual void Seek(Long64_t offset, ERelativeTo position=kBeg)
Set the position within the file.
XrdCl::URL * fUrl
Definition: TNetXNGFile.h:47
Int_t ParseOpenMode(Option_t *in, TString &modestr, XrdCl::OpenFlags::Flags &mode, Bool_t assumeRead)
Parse a file open mode given as a string into a canonically formatted output mode string and an integ...
virtual Bool_t ReadBuffer(char *buffer, Int_t length)
Read a data chunk of the given size.
XrdCl::OpenFlags::Flags fMode
Definition: TNetXNGFile.h:48
TNetXNGFile & operator=(const TNetXNGFile &other)
virtual Bool_t IsOpen() const
Check if the file is open.
virtual Bool_t ReadBuffers(char *buffer, Long64_t *position, Int_t *length, Int_t nbuffs)
Read scattered data chunks in one operation.
virtual TString GetNewUrl()
Definition: TNetXNGFile.h:77
virtual Bool_t GetVectorReadLimits()
Find the server-specific readv config params.
XrdSysCondVar * fInitCondVar
Definition: TNetXNGFile.h:49
TString fNewUrl
Definition: TNetXNGFile.h:54
virtual void Flush()
Synchronize a file's in-memory and on-disk states.
virtual void SetAsyncOpenStatus(EAsyncOpenStatus status)
Set the status of an asynchronous file open.
Int_t fQueryReadVParams
Definition: TNetXNGFile.h:53