Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TNetXNGSystem.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_TNetXNGSystem
11#define ROOT_TNetXNGSystem
12
13////////////////////////////////////////////////////////////////////////////////
14// //
15// TNetXNGSystem //
16// //
17// Authors: Justin Salmon, Lukasz Janyst //
18// CERN, 2013 //
19// //
20// Enables access to XRootD filesystem interface using the new client. //
21// //
22////////////////////////////////////////////////////////////////////////////////
23
24#include "TSystem.h"
25#include "TCollection.h"
26#include "TMutex.h"
27#include "THashList.h"
28#include <set>
29
30namespace XrdCl {
31 class FileSystem;
32 class URL;
33 class DirectoryList;
34}
35
36class TNetXNGSystem: public TSystem {
37
38private:
39 std::set<void *> fDirPtrs;
40 static THashList fgAddrFQDN; // Cache of addresses to FQDNs
41 static TMutex fgAddrMutex; // Serialise access to the FQDN list
42private:
43 XrdCl::URL *fUrl; // URL of this TSystem
44 XrdCl::FileSystem *fFileSystem; // Cached for convenience
45
46public:
47 TNetXNGSystem(Bool_t owner = kTRUE);
48 TNetXNGSystem(const char *url, Bool_t owner = kTRUE);
49 virtual ~TNetXNGSystem();
50
51 void *OpenDirectory(const char *dir) override;
52 Int_t MakeDirectory(const char *dir) override;
53 void FreeDirectory(void *dirp) override;
54 const char *GetDirEntry(void *dirp) override;
55 Int_t GetPathInfo(const char *path, FileStat_t &buf) override;
56 Bool_t ConsistentWith(const char *path, void *dirptr) override;
57 int Unlink(const char *path) override;
58 Bool_t IsPathLocal(const char *path) override;
59
60 virtual Int_t Locate(const char *path, TString &endurl);
61 virtual Int_t Stage(const char *path, UChar_t priority);
62 virtual Int_t Stage(TCollection *files, UChar_t priority);
63
64 ClassDefOverride(TNetXNGSystem, 0) // ROOT class definition
65};
66
67#endif
unsigned char UChar_t
Definition RtypesCore.h:38
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Collection abstract base class.
Definition TCollection.h:65
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition THashList.h:34
Bool_t ConsistentWith(const char *path, void *dirptr) override
Check consistency of this helper with the one required by 'path' or 'dirptr'.
int Unlink(const char *path) override
Unlink a file on the remote server.
XrdCl::FileSystem * fFileSystem
static TMutex fgAddrMutex
void * OpenDirectory(const char *dir) override
Open a directory.
std::set< void * > fDirPtrs
static THashList fgAddrFQDN
Int_t GetPathInfo(const char *path, FileStat_t &buf) override
Get info about a file (stat)
const char * GetDirEntry(void *dirp) override
Get a directory entry.
XrdCl::URL * fUrl
virtual Int_t Stage(const char *path, UChar_t priority)
Issue a stage request for a single file.
virtual Int_t Locate(const char *path, TString &endurl)
Get the endpoint URL of a file.
void FreeDirectory(void *dirp) override
Free a directory.
virtual ~TNetXNGSystem()
Destructor.
Bool_t IsPathLocal(const char *path) override
Is this path a local path?
Int_t MakeDirectory(const char *dir) override
Create a directory.
Basic string class.
Definition TString.h:139
Abstract base class defining a generic interface to the underlying Operating System.
Definition TSystem.h:260