Logo ROOT   6.18/05
Reference Guide
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
42#ifndef __CINT__
43private:
44 XrdCl::URL *fUrl; // URL of this TSystem
45 XrdCl::FileSystem *fFileSystem; // Cached for convenience
46
47#endif
48
49public:
50 TNetXNGSystem(Bool_t owner = kTRUE);
51 TNetXNGSystem(const char *url, Bool_t owner = kTRUE);
52 virtual ~TNetXNGSystem();
53
54 virtual void *OpenDirectory(const char *dir);
55 virtual Int_t MakeDirectory(const char *dir);
56 virtual void FreeDirectory(void *dirp);
57 virtual const char *GetDirEntry(void *dirp);
58 virtual Int_t GetPathInfo(const char *path, FileStat_t &buf);
59 virtual Bool_t ConsistentWith(const char *path, void *dirptr);
60 virtual int Unlink(const char *path);
61 virtual Bool_t IsPathLocal(const char *path);
62 virtual Int_t Locate(const char *path, TString &endurl);
63 virtual Int_t Stage(const char *path, UChar_t priority);
64 virtual Int_t Stage(TCollection *files, UChar_t priority);
65
66 ClassDef(TNetXNGSystem, 0) // ROOT class definition
67};
68
69#endif
int Int_t
Definition: RtypesCore.h:41
unsigned char UChar_t
Definition: RtypesCore.h:34
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:326
Collection abstract base class.
Definition: TCollection.h:63
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:34
Definition: TMutex.h:30
XrdCl::FileSystem * fFileSystem
Definition: TNetXNGSystem.h:45
static TMutex fgAddrMutex
Definition: TNetXNGSystem.h:41
virtual Int_t GetPathInfo(const char *path, FileStat_t &buf)
Get info about a file (stat)
std::set< void * > fDirPtrs
Definition: TNetXNGSystem.h:39
virtual Bool_t IsPathLocal(const char *path)
Is this path a local path?
static THashList fgAddrFQDN
Definition: TNetXNGSystem.h:40
XrdCl::URL * fUrl
Definition: TNetXNGSystem.h:44
virtual int Unlink(const char *path)
Unlink a file on the remote server.
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.
virtual void FreeDirectory(void *dirp)
Free a directory.
virtual Int_t MakeDirectory(const char *dir)
Create a directory.
TNetXNGSystem(Bool_t owner=kTRUE)
Constructor: Create system class without connecting to server.
virtual Bool_t ConsistentWith(const char *path, void *dirptr)
Check consistency of this helper with the one required by 'path' or 'dirptr'.
virtual const char * GetDirEntry(void *dirp)
Get a directory entry.
virtual ~TNetXNGSystem()
Destructor.
virtual void * OpenDirectory(const char *dir)
Open a directory.
Basic string class.
Definition: TString.h:131
Abstract base class defining a generic interface to the underlying Operating System.
Definition: TSystem.h:268