ROOT  6.06/09
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
53  friend class TDavixFile;
54  friend class TDavixSystem;
55 
56 private:
57  TDavixFileInternal(const TUrl & mUrl, Option_t* mopt) :
58  positionLock(),
59  openLock(),
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(),
75  davixFd(NULL),
76  fUrl(url),
77  opt(mopt),
78  oflags(0),
79  dirdVec() { }
80 
82 
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 
117 
118  // DAVIX
119  Davix::Context *davixContext;
120  Davix::RequestParams *davixParam;
121  Davix::DavPosix *davixPosix;
122  Davix_fd *davixFd;
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
Definition: TMutex.h:37
TDavixFileInternal(const char *url, Option_t *mopt)
const char Option_t
Definition: RtypesCore.h:62
This class represents a WWW compatible URL.
Definition: TUrl.h:41
void setS3Auth(const std::string &key, const std::string &token)
Definition: TDavixFile.cxx:287
Davix::RequestParams * davixParam
Small helper to keep current directory context.
Davix_fd * Open()
Definition: TDavixFile.cxx:240
void addDird(void *fd)
Definition: TDavixFile.cxx:582
int Int_t
Definition: RtypesCore.h:41
Davix_fd * getDavixFileInstance()
Davix::DavPosix * davixPosix
Int_t DavixStat(const char *url, struct stat *st)
Definition: TDavixFile.cxx:387
TDavixFileInternal(const TUrl &mUrl, Option_t *mopt)
static Davix::Context * getDavixInstance()
Definition: TDavixFile.cxx:227
void removeDird(void *fd)
Definition: TDavixFile.cxx:590
bool isMyDird(void *fd)
Definition: TDavixFile.cxx:573
TLine * l
Definition: textangle.C:4
std::vector< void * > dirdVec
#define NULL
Definition: Rtypes.h:82
void parseParams(Option_t *option)
intput params
Definition: TDavixFile.cxx:332
Davix::Context * davixContext