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
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
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