ROOT
6.06/09
Reference Guide
ROOT Home Page
Main Page
Related Pages
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
net
davix
inc
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
setS3Auth
(
const
std::string & key,
const
std::string & token);
102
103
void
parseConfig
();
104
105
void
parseParams
(
Option_t
* option);
106
107
void
init
();
108
109
bool
isMyDird
(
void
* fd);
110
111
void
addDird
(
void
* fd);
112
113
void
removeDird
(
void
* fd);
114
115
TMutex
positionLock
;
116
TMutex
openLock
;
117
118
// DAVIX
119
Davix::Context *
davixContext
;
120
Davix::RequestParams *
davixParam
;
121
Davix::DavPosix *
davixPosix
;
122
Davix_fd *
davixFd
;
123
TUrl
fUrl
;
124
Option_t
*
opt
;
125
int
oflags
;
126
std::vector<void*>
dirdVec
;
127
128
public
:
129
Int_t
DavixStat
(
const
char
*url,
struct
stat *st);
130
131
static
Davix::Context*
getDavixInstance
();
132
};
133
134
#endif
Davix
Definition:
TDavixFileInternal.h:44
TDavixFileInternal
Definition:
TDavixFileInternal.h:52
TMutex
Definition:
TMutex.h:37
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:41
TDavixFileInternal::setS3Auth
void setS3Auth(const std::string &key, const std::string &token)
Definition:
TDavixFile.cxx:287
TDavixFileInternal::davixParam
Davix::RequestParams * davixParam
Definition:
TDavixFileInternal.h:120
TDavixFileInternal::oflags
int oflags
Definition:
TDavixFileInternal.h:125
Context
Small helper to keep current directory context.
TDavixFileInternal::Open
Davix_fd * Open()
Definition:
TDavixFile.cxx:240
TDavixFileInternal::addDird
void addDird(void *fd)
Definition:
TDavixFile.cxx:582
Int_t
int Int_t
Definition:
RtypesCore.h:41
TDavixFileInternal::getDavixFileInstance
Davix_fd * getDavixFileInstance()
Definition:
TDavixFileInternal.h:83
TLockGuard
Definition:
TVirtualMutex.h:69
TDavixFileInternal::davixPosix
Davix::DavPosix * davixPosix
Definition:
TDavixFileInternal.h:121
TDavixFileInternal::DavixStat
Int_t DavixStat(const char *url, struct stat *st)
Definition:
TDavixFile.cxx:387
TDavixFileInternal::positionLock
TMutex positionLock
Definition:
TDavixFileInternal.h:115
TDavixFileInternal::TDavixFileInternal
TDavixFileInternal(const TUrl &mUrl, Option_t *mopt)
Definition:
TDavixFileInternal.h:57
TDavixFileInternal::getDavixInstance
static Davix::Context * getDavixInstance()
Definition:
TDavixFile.cxx:227
TDavixFileInternal::removeDird
void removeDird(void *fd)
Definition:
TDavixFile.cxx:590
TDavixFileInternal::enableGridMode
void enableGridMode()
Definition:
TDavixFile.cxx:270
TUrl.h
TDavixFileInternal::parseConfig
void parseConfig()
Definition:
TDavixFile.cxx:297
TDavixFileInternal::isMyDird
bool isMyDird(void *fd)
Definition:
TDavixFile.cxx:573
l
TLine * l
Definition:
textangle.C:4
TDavixFileInternal::~TDavixFileInternal
~TDavixFileInternal()
Definition:
TDavixFile.cxx:219
TMutex.h
TDavixFileInternal::Close
void Close()
Definition:
TDavixFile.cxx:258
TDavixFileInternal::dirdVec
std::vector< void * > dirdVec
Definition:
TDavixFileInternal.h:126
TDavixFileInternal::davixFd
Davix_fd * davixFd
Definition:
TDavixFileInternal.h:122
TDavixFileInternal::opt
Option_t * opt
Definition:
TDavixFileInternal.h:124
TDavixSystem
Definition:
TDavixSystem.h:41
NULL
#define NULL
Definition:
Rtypes.h:82
TDavixFileInternal::openLock
TMutex openLock
Definition:
TDavixFileInternal.h:116
TDavixFile
Definition:
TDavixFile.h:60
TDavixFileInternal::parseParams
void parseParams(Option_t *option)
intput params
Definition:
TDavixFile.cxx:332
TDavixFileInternal::init
void init()
Definition:
TDavixFile.cxx:375
TDavixFileInternal::davixContext
Davix::Context * davixContext
Definition:
TDavixFileInternal.h:119
TDavixFileInternal::fUrl
TUrl fUrl
Definition:
TDavixFileInternal.h:123