Logo ROOT   6.10/00
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups 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 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 
122 
123  // DAVIX
124  Davix::Context *davixContext;
125  Davix::RequestParams *davixParam;
126  Davix::DavPosix *davixPosix;
127  Davix_fd *davixFd;
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
Definition: TMutex.h:30
TDavixFileInternal(const char *url, Option_t *mopt)
const char Option_t
Definition: RtypesCore.h:62
void setS3Auth(const std::string &secret, const std::string &access, const std::string &region, const std::string &token)
Definition: TDavixFile.cxx:365
This class represents a WWW compatible URL.
Definition: TUrl.h:35
Davix::RequestParams * davixParam
Small helper to keep current directory context.
Davix_fd * Open()
Definition: TDavixFile.cxx:252
void addDird(void *fd)
Definition: TDavixFile.cxx:690
int Int_t
Definition: RtypesCore.h:41
#define NULL
Definition: RtypesCore.h:88
void setAwsAlternate(const bool &option)
Definition: TDavixFile.cxx:360
Davix_fd * getDavixFileInstance()
void setAwsRegion(const std::string &region)
Definition: TDavixFile.cxx:348
Davix::DavPosix * davixPosix
Int_t DavixStat(const char *url, struct stat *st)
Definition: TDavixFile.cxx:495
TDavixFileInternal(const TUrl &mUrl, Option_t *mopt)
static Davix::Context * getDavixInstance()
Definition: TDavixFile.cxx:239
void removeDird(void *fd)
Definition: TDavixFile.cxx:698
bool isMyDird(void *fd)
Definition: TDavixFile.cxx:681
TLine * l
Definition: textangle.C:4
std::vector< void * > dirdVec
void setAwsToken(const std::string &token)
Definition: TDavixFile.cxx:354
void parseParams(Option_t *option)
intput params
Definition: TDavixFile.cxx:428
Davix::Context * davixContext