ROOT
6.10/02
Reference Guide
ROOT Home Page
Main Page
Tutorials
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
net
davix
src
TDavixFileInternal.h
Go to the documentation of this file.
1
// @(#)root/net:$Id$
2
// Author: Adrien Devresse and Tigran Mkrtchyan
3
4
/*************************************************************************
5
* Copyright (C) 1995-2013, Rene Brun and Fons Rademakers. *
6
* All rights reserved. *
7
* *
8
* For the licensing terms see $ROOTSYS/LICENSE. *
9
* For the list of contributors see $ROOTSYS/README/CREDITS. *
10
*************************************************************************/
11
12
#ifndef ROOT_TDavixFileInternal
13
#define ROOT_TDavixFileInternal
14
15
#include "
TUrl.h
"
16
#include "
TMutex.h
"
17
18
#include <vector>
19
#include <iterator>
20
#include <algorithm>
21
#include <errno.h>
22
#include <stdlib.h>
23
#include <unistd.h>
24
#include <fcntl.h>
25
#include <sys/stat.h>
26
#include <sstream>
27
#include <string>
28
#include <cstring>
29
30
//////////////////////////////////////////////////////////////////////////
31
// //
32
// TDavixFileInternal //
33
// //
34
// //
35
// Support class, common to TDavixFile and TDavixSystem //
36
// //
37
// Authors: Adrien Devresse (CERN IT/SDC) //
38
// Fabrizio Furano (CERN IT/SDC) //
39
// //
40
// September 2013 //
41
// //
42
//////////////////////////////////////////////////////////////////////////
43
44
namespace
Davix
{
45
class
Context
;
46
class
RequestParams;
47
class
DavPosix;
48
}
49
struct
Davix_fd;
50
51
52
class
TDavixFileInternal
{
53
friend
class
TDavixFile
;
54
friend
class
TDavixSystem
;
55
56
private
:
57
TDavixFileInternal
(
const
TUrl
& mUrl,
Option_t
* mopt) :
58
positionLock(),
59
openLock(),
60
davixContext(getDavixInstance()),
61
davixParam(
NULL
),
62
davixPosix(
NULL
),
63
davixFd(
NULL
),
64
fUrl(mUrl),
65
opt(mopt),
66
oflags(0),
67
dirdVec() { }
68
69
TDavixFileInternal
(
const
char
* url,
Option_t
* mopt) :
70
positionLock(),
71
openLock(),
72
davixContext(getDavixInstance()),
73
davixParam(
NULL
),
74
davixPosix(
NULL
),
75
davixFd(
NULL
),
76
fUrl(url),
77
opt(mopt),
78
oflags(0),
79
dirdVec() { }
80
81
~
TDavixFileInternal
();
82
83
Davix_fd *
getDavixFileInstance
()
84
{
85
// singleton init
86
if
(davixFd ==
NULL
) {
87
TLockGuard
l
(&(openLock));
88
if
(davixFd ==
NULL
) {
89
davixFd = this->Open();
90
}
91
}
92
return
davixFd;
93
}
94
95
Davix_fd * Open();
96
97
void
Close();
98
99
void
enableGridMode();
100
101
void
setAwsRegion(
const
std::string & region);
102
void
setAwsToken(
const
std::string & token);
103
void
setAwsAlternate(
const
bool
&option);
104
105
void
setS3Auth(
const
std::string & secret,
const
std::string & access,
106
const
std::string & region,
const
std::string & token);
107
108
void
parseConfig();
109
110
void
parseParams(
Option_t
* option);
111
112
void
init
();
113
114
bool
isMyDird(
void
* fd);
115
116
void
addDird(
void
* fd);
117
118
void
removeDird(
void
* fd);
119
120
TMutex
positionLock
;
121
TMutex
openLock
;
122
123
// DAVIX
124
Davix::Context *
davixContext
;
125
Davix::RequestParams *
davixParam
;
126
Davix::DavPosix *
davixPosix
;
127
Davix_fd *
davixFd
;
128
TUrl
fUrl
;
129
Option_t
*
opt
;
130
int
oflags
;
131
std::vector<void*>
dirdVec
;
132
133
public
:
134
Int_t
DavixStat(
const
char
*url,
struct
stat *st);
135
136
static
Davix::Context* getDavixInstance();
137
};
138
139
#endif
Davix
Definition:
TDavixFileInternal.h:44
TDavixFileInternal
Definition:
TDavixFileInternal.h:52
TMutex
Definition:
TMutex.h:30
TDavixFileInternal::TDavixFileInternal
TDavixFileInternal(const char *url, Option_t *mopt)
Definition:
TDavixFileInternal.h:69
Option_t
const char Option_t
Definition:
RtypesCore.h:62
TUrl
This class represents a WWW compatible URL.
Definition:
TUrl.h:35
TDavixFileInternal::davixParam
Davix::RequestParams * davixParam
Definition:
TDavixFileInternal.h:125
TDavixFileInternal::oflags
int oflags
Definition:
TDavixFileInternal.h:130
Context
Small helper to keep current directory context.
Int_t
int Int_t
Definition:
RtypesCore.h:41
NULL
#define NULL
Definition:
RtypesCore.h:88
TDavixFileInternal::getDavixFileInstance
Davix_fd * getDavixFileInstance()
Definition:
TDavixFileInternal.h:83
TLockGuard
Definition:
TVirtualMutex.h:67
TDavixFileInternal::davixPosix
Davix::DavPosix * davixPosix
Definition:
TDavixFileInternal.h:126
TDavixFileInternal::positionLock
TMutex positionLock
Definition:
TDavixFileInternal.h:120
TDavixFileInternal::TDavixFileInternal
TDavixFileInternal(const TUrl &mUrl, Option_t *mopt)
Definition:
TDavixFileInternal.h:57
TUrl.h
l
TLine * l
Definition:
textangle.C:4
TMutex.h
TDavixFileInternal::dirdVec
std::vector< void * > dirdVec
Definition:
TDavixFileInternal.h:131
TDavixFileInternal::davixFd
Davix_fd * davixFd
Definition:
TDavixFileInternal.h:127
init
static Int_t init()
Definition:
RooClassFactory.cxx:54
TDavixFileInternal::opt
Option_t * opt
Definition:
TDavixFileInternal.h:129
TDavixSystem
Definition:
TDavixSystem.h:41
TDavixFileInternal::openLock
TMutex openLock
Definition:
TDavixFileInternal.h:121
TDavixFile
Definition:
TDavixFile.h:66
TDavixFileInternal::davixContext
Davix::Context * davixContext
Definition:
TDavixFileInternal.h:124
TDavixFileInternal::fUrl
TUrl fUrl
Definition:
TDavixFileInternal.h:128