ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
fReadDavix Class Reference

#include <fReadDavix.h>

Inheritance diagram for fReadDavix:
Collaboration diagram for fReadDavix:

Public Member Functions

 fReadDavix ()
 
 ~fReadDavix ()
 
bool isOpen ()
 
bool isEoF ()
 
bool fileExists (std::string fName) const
 
void openFile (std::string fName)
 
void closeFile ()
 
void readData (char *buffer, unsigned int sizeBytes)
 
int64_t getPosition ()
 
void setPosition (int64_t p)
 
void setPositionFromEnd (int64_t p)
 
fRead * newReader () const
 

Private Attributes

int m_pfd
 
int64_t m_offset
 
Davix::Context m_c
 
Davix::RequestParams * m_davixParam
 
Davix::DavixError * m_err
 
Davix::DavPosix *m_pos ATLAS_THREAD_SAFE
 
Davix::X509Credential * m_cert
 
DAVIX_FD * m_fd
 

Detailed Description

Definition at line 12 of file fReadDavix.h.

Constructor & Destructor Documentation

◆ fReadDavix()

fReadDavix::fReadDavix ( )

Definition at line 33 of file fReadDavix.cxx.

34 {
35  m_pfd = 0;
36  m_offset = 0;
37  m_fd = nullptr;
38 
39  m_davixParam = new Davix::RequestParams();
40  m_err = NULL;
41  m_pos = new Davix::DavPosix(&m_c);
42  //m_pos = &m_c;
43 
44 
45  // enableGridMode
46  const char *env_var = NULL;
47  if( ( env_var = std::getenv("X509_CERT_DIR")) == NULL){
48  env_var = "/etc/grid-security/certificates/";
49  }
50  m_davixParam->addCertificateAuthorityPath(env_var);
51  m_davixParam->setTransparentRedirectionSupport(true);
52  m_cert = new Davix::X509Credential();
53  m_davixParam->setClientCertCallbackX509(&TDavixFile_http_authn_cert_X509, NULL);
54 
55 }

◆ ~fReadDavix()

fReadDavix::~fReadDavix ( )

Definition at line 57 of file fReadDavix.cxx.

58 {
59  this->closeFile();
60 }

Member Function Documentation

◆ closeFile()

void fReadDavix::closeFile ( )

Definition at line 92 of file fReadDavix.cxx.

93 {
94  if(m_pfd != 0) m_pos->close(m_fd, &m_err);
95  m_pfd = 0;
96 }

◆ fileExists()

bool fReadDavix::fileExists ( std::string  fName) const

Definition at line 74 of file fReadDavix.cxx.

75 {
76  Davix::DavixError* err2 = NULL;
77  DAVIX_FD* pfd = m_pos->open(m_davixParam, fName.c_str(), O_RDONLY, &err2);
78  if(pfd == 0) return false;
79  m_pos->close(pfd, &err2);
80  return true;
81 }

◆ getPosition()

int64_t fReadDavix::getPosition ( )

Definition at line 132 of file fReadDavix.cxx.

133 {
134  if(this->isOpen()) return m_offset;
135 
136  return -1;
137 }

◆ isEoF()

bool fReadDavix::isEoF ( )

Definition at line 67 of file fReadDavix.cxx.

68 {
69 
70  return false;
71 }

◆ isOpen()

bool fReadDavix::isOpen ( )

Definition at line 62 of file fReadDavix.cxx.

63 {
64  return m_pfd != 0;
65 }

◆ newReader()

fRead * fReadDavix::newReader ( ) const

Definition at line 153 of file fReadDavix.cxx.

154 {
155  fReadDavix * nfr = new fReadDavix();
156  return (fRead *)nfr;
157 }

◆ openFile()

void fReadDavix::openFile ( std::string  fName)

Definition at line 84 of file fReadDavix.cxx.

85 {
86  if(this->isOpen()) this->closeFile();
87  m_fd = m_pos->open(m_davixParam, fName.c_str(), O_RDONLY, &m_err);
88  m_offset = 0;
89  m_pfd = 1;
90 }

◆ readData()

void fReadDavix::readData ( char *  buffer,
unsigned int  sizeBytes 
)

Definition at line 98 of file fReadDavix.cxx.

99 {
100  if (sizeBytes==0) return;
101  if(this->isOpen())
102  {
103  unsigned int totalRead=0,ntry=0;
104  while(sizeBytes > totalRead)
105  {
106  ssize_t ret = m_pos->pread(m_fd, buffer, sizeBytes, m_offset, &m_err);
107  if (ret < 0) {
108  std::stringstream mystream;
109  mystream << "fReadDavix::readData: can not read data with davix " << m_err->getErrMsg().c_str() << " " << m_err->getStatus();
110  Davix::DavixError::clearError(&m_err);
111  EventStorage::ReadingIssue ci(ERS_HERE, mystream.str().c_str());
112  ers::warning(ci);
113  return;
114  } else {
115  m_offset += ret;
116  }
117  totalRead += ret; ++ntry;
118  if(ntry>5) {
119  std::stringstream mystream;
120  mystream << "Problem reading from the data file. "
121  <<"fReadDavix::readData asked to read "<<sizeBytes
122  <<" bytes and managed to read only "<<totalRead
123  <<" bytes.";
124  EventStorage::ReadingIssue ci(ERS_HERE, mystream.str().c_str());
125  ers::warning(ci);
126  return;
127  }
128  }
129  }
130 }

◆ setPosition()

void fReadDavix::setPosition ( int64_t  p)

Definition at line 139 of file fReadDavix.cxx.

140 {
141  if(this->isOpen()) m_offset = p;
142 }

◆ setPositionFromEnd()

void fReadDavix::setPositionFromEnd ( int64_t  p)

Definition at line 144 of file fReadDavix.cxx.

145 {
146  dav_off_t ret;
147  if(this->isOpen()) {
148  ret = m_pos->lseek64(m_fd, p, SEEK_END, &m_err);
149  m_offset = ret;
150  }
151 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

Davix::DavPosix* m_pos fReadDavix::ATLAS_THREAD_SAFE
private

Definition at line 35 of file fReadDavix.h.

◆ m_c

Davix::Context fReadDavix::m_c
private

Definition at line 32 of file fReadDavix.h.

◆ m_cert

Davix::X509Credential* fReadDavix::m_cert
private

Definition at line 36 of file fReadDavix.h.

◆ m_davixParam

Davix::RequestParams* fReadDavix::m_davixParam
private

Definition at line 33 of file fReadDavix.h.

◆ m_err

Davix::DavixError* fReadDavix::m_err
private

Definition at line 34 of file fReadDavix.h.

◆ m_fd

DAVIX_FD* fReadDavix::m_fd
private

Definition at line 37 of file fReadDavix.h.

◆ m_offset

int64_t fReadDavix::m_offset
private

Definition at line 31 of file fReadDavix.h.

◆ m_pfd

int fReadDavix::m_pfd
private

Definition at line 30 of file fReadDavix.h.


The documentation for this class was generated from the following files:
fReadDavix::m_fd
DAVIX_FD * m_fd
Definition: fReadDavix.h:37
fReadDavix::m_err
Davix::DavixError * m_err
Definition: fReadDavix.h:34
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
fReadDavix::m_offset
int64_t m_offset
Definition: fReadDavix.h:31
rootconvert.fName
string fName
Definition: rootconvert.py:5
fReadDavix::fReadDavix
fReadDavix()
Definition: fReadDavix.cxx:33
fReadDavix::m_pfd
int m_pfd
Definition: fReadDavix.h:30
createCoolChannelIdFile.buffer
buffer
Definition: createCoolChannelIdFile.py:12
fReadDavix::m_c
Davix::Context m_c
Definition: fReadDavix.h:32
ret
T ret(T t)
Definition: rootspy.cxx:260
fReadDavix::isOpen
bool isOpen()
Definition: fReadDavix.cxx:62
fReadDavix
Definition: fReadDavix.h:13
fReadDavix::m_cert
Davix::X509Credential * m_cert
Definition: fReadDavix.h:36
fReadDavix::closeFile
void closeFile()
Definition: fReadDavix.cxx:92
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
fReadDavix::m_davixParam
Davix::RequestParams * m_davixParam
Definition: fReadDavix.h:33