ATLAS Offline Software
Loading...
Searching...
No Matches
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}
DAVIX_FD * m_fd
Definition fReadDavix.h:37
Davix::Context m_c
Definition fReadDavix.h:32
Davix::RequestParams * m_davixParam
Definition fReadDavix.h:33
Davix::X509Credential * m_cert
Definition fReadDavix.h:36
int64_t m_offset
Definition fReadDavix.h:31
Davix::DavixError * m_err
Definition fReadDavix.h:34
static int TDavixFile_http_authn_cert_X509(void *userdata, const Davix::SessionInfo &info, Davix::X509Credential *cert, Davix::DavixError **err)

◆ ~fReadDavix()

fReadDavix::~fReadDavix ( )

Definition at line 57 of file fReadDavix.cxx.

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

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}
bool isOpen()

◆ 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 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.

◆ 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: