ROOT
6.10/08
Reference Guide
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