Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TNetXNGFile.h
Go to the documentation of this file.
1
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
30namespace XrdCl {
31 class File;
32 class URL;
33}
34class XrdSysCondVar;
35
36#ifdef __CLING__
37namespace XrdCl {
38 struct OpenFlags {
39 enum Flags {None = 0};
40 };
41}
42#endif
43
44class TNetXNGFile: public TFile {
45private:
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
56public:
58 fFile(nullptr), fUrl(nullptr), fMode(XrdCl::OpenFlags::None), fInitCondVar(nullptr),
60 TNetXNGFile(const char *url, const char *lurl, Option_t *mode, const char *title,
61 Int_t compress, Int_t netopt, Bool_t parallelopen);
62 TNetXNGFile(const char *url, Option_t *mode = "", const char *title = "",
63 Int_t compress = 1, Int_t netopt = 0, Bool_t parallelopen = kFALSE);
64
65 virtual ~TNetXNGFile();
66
67 void Init(Bool_t create) override;
68 void Close(const Option_t *option = "") override;
69 void Seek(Long64_t offset, ERelativeTo position = kBeg) override;
70 virtual void SetAsyncOpenStatus(EAsyncOpenStatus status);
71 Long64_t GetSize() const override;
72 Int_t ReOpen(Option_t *modestr) override;
73 Bool_t IsOpen() const override;
74 Bool_t WriteBuffer(const char *buffer, Int_t length) override;
75 void Flush() override;
76 Bool_t ReadBuffer(char *buffer, Int_t length) override;
77 Bool_t ReadBuffer(char *buffer, Long64_t position, Int_t length) override;
78 Bool_t ReadBuffers(char *buffer, Long64_t *position, Int_t *length,
79 Int_t nbuffs) override;
80 TString GetNewUrl() override { return fNewUrl; }
81
82private:
83 virtual Bool_t IsUseable() const;
85 virtual void SetEnv();
86 Int_t ParseOpenMode(Option_t *in, TString &modestr,
87 XrdCl::OpenFlags::Flags &mode, Bool_t assumeRead);
88
89 TNetXNGFile(const TNetXNGFile &other); // Not implemented
90 TNetXNGFile &operator =(const TNetXNGFile &other); // Not implemented
91
92 ClassDefOverride(TNetXNGFile, 0) // ROOT class definition
93};
94
95#endif // ROOT_TNetXNGFile
@ None
Definition RooMinuit.h:6
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
long long Long64_t
Definition RtypesCore.h:80
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t option
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
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:51
EAsyncOpenStatus
Asynchronous open request status.
Definition TFile.h:62
ERelativeTo
Definition TFile.h:190
@ kBeg
Definition TFile.h:190
XrdCl::File * fFile
Definition TNetXNGFile.h:46
void Seek(Long64_t offset, ERelativeTo position=kBeg) override
Set the position within the file.
TString GetNewUrl() override
Definition TNetXNGFile.h:80
virtual void SetEnv()
Map ROOT and xrootd environment variables.
Int_t fReadvIovMax
Definition TNetXNGFile.h:52
XrdCl::URL * fUrl
Definition TNetXNGFile.h:47
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.
TNetXNGFile(const TNetXNGFile &other)
XrdCl::OpenFlags::Flags fMode
Definition TNetXNGFile.h:48
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.
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...
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.
TString fNewUrl
Definition TNetXNGFile.h:54
Int_t fQueryReadVParams
Definition TNetXNGFile.h:53
Int_t ReOpen(Option_t *modestr) override
Reopen the file with the new access mode.
XrdSysCondVar * fInitCondVar
Definition TNetXNGFile.h:49
Long64_t GetSize() const override
Get the file size.
virtual ~TNetXNGFile()
Destructor.
Int_t fReadvIorMax
Definition TNetXNGFile.h:51
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.
TNetXNGFile & operator=(const TNetXNGFile &other)
Basic string class.
Definition TString.h:139