XRootD
Loading...
Searching...
No Matches
XrdClS3::File Class Referencefinal

#include <XrdClS3File.hh>

Inheritance diagram for XrdClS3::File:
Collaboration diagram for XrdClS3::File:

Public Member Functions

 File (XrdCl::Log *log)
virtual ~File () noexcept
virtual XrdCl::XRootDStatus Close (XrdCl::ResponseHandler *handler, time_t timeout) override
virtual bool GetProperty (const std::string &name, std::string &value) const override
virtual bool IsOpen () const override
virtual XrdCl::XRootDStatus Open (const std::string &url, XrdCl::OpenFlags::Flags flags, XrdCl::Access::Mode mode, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual XrdCl::XRootDStatus PgRead (uint64_t offset, uint32_t size, void *buffer, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual XrdCl::XRootDStatus Read (uint64_t offset, uint32_t size, void *buffer, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual bool SetProperty (const std::string &name, const std::string &value) override
virtual XrdCl::XRootDStatus Stat (bool force, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual XrdCl::XRootDStatus VectorRead (const XrdCl::ChunkList &chunks, void *buffer, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual XrdCl::XRootDStatus Write (uint64_t offset, uint32_t size, const void *buffer, XrdCl::ResponseHandler *handler, time_t timeout) override
virtual XrdCl::XRootDStatus Write (uint64_t offset, XrdCl::Buffer &&buffer, XrdCl::ResponseHandler *handler, time_t timeout) override
Public Member Functions inherited from XrdCl::FilePlugIn
virtual ~FilePlugIn ()
 Destructor.
virtual XRootDStatus Clone (const CloneLocations &locs, ResponseHandler *handler, time_t timeout)
virtual std::unique_ptr< ExportedFileTemplate > ExportTemplate () const
virtual XRootDStatus Fcntl (const Buffer &arg, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus Fcntl (QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus OpenUsingTemplate (ExportedFileTemplate *templ, const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus PgWrite (uint64_t offset, uint32_t nbpgs, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus PreRead (const TractList &tracts, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus Read (uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, time_t timeout=0)
virtual XRootDStatus Sync (ResponseHandler *handler, time_t timeout)
virtual XRootDStatus Truncate (uint64_t size, ResponseHandler *handler, time_t timeout)
virtual XRootDStatus VectorWrite (const ChunkList &chunks, ResponseHandler *handler, time_t timeout=0)
virtual XRootDStatus Visa (ResponseHandler *handler, time_t timeout)
virtual XRootDStatus Write (uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, time_t timeout=0)
virtual XRootDStatus WriteV (uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, time_t timeout=0)

Detailed Description

Definition at line 36 of file XrdClS3File.hh.

Constructor & Destructor Documentation

◆ File()

File::File ( XrdCl::Log * log)

Definition at line 86 of file XrdClS3File.cc.

86 :
87 m_logger(log),
88 m_wrapped_file()
89{
90}

References File().

Referenced by File().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~File()

File::~File ( )
virtualnoexcept

Definition at line 92 of file XrdClS3File.cc.

92{}

Member Function Documentation

◆ Close()

XrdCl::XRootDStatus File::Close ( XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Close

Reimplemented from XrdCl::FilePlugIn.

Definition at line 95 of file XrdClS3File.cc.

97{
98 return m_wrapped_file->Close(new CloseResponseHandler(&m_is_opened, handler), timeout);
99}

◆ GetProperty()

bool File::GetProperty ( const std::string & name,
std::string & value ) const
overridevirtual
See also
XrdCl::File::GetProperty

Reimplemented from XrdCl::FilePlugIn.

Definition at line 108 of file XrdClS3File.cc.

110{
111 std::unique_lock lock(m_properties_mutex);
112 const auto p = m_properties.find(name);
113 if (p == std::end(m_properties)) {
114 return false;
115 }
116
117 value = p->second;
118 return true;
119}

◆ IsOpen()

bool File::IsOpen ( ) const
overridevirtual
See also
XrdCl::File::IsOpen

Reimplemented from XrdCl::FilePlugIn.

Definition at line 102 of file XrdClS3File.cc.

103{
104 return m_is_opened;
105}

Referenced by Open().

Here is the caller graph for this function:

◆ Open()

XrdCl::XRootDStatus File::Open ( const std::string & url,
XrdCl::OpenFlags::Flags flags,
XrdCl::Access::Mode mode,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Open

Reimplemented from XrdCl::FilePlugIn.

Definition at line 165 of file XrdClS3File.cc.

170{
171 if (IsOpen()) {
172 m_logger->Error(kLogXrdClS3, "URL %s already open", url.c_str());
173 return XrdCl::XRootDStatus(XrdCl::stError, XrdCl::errInvalidOp);
174 }
175
178 std::string https_url, obj, err_msg;
179 if (!Factory::GenerateHttpUrl(url, https_url, &obj, err_msg)) {
180 return XrdCl::XRootDStatus(XrdCl::stError, XrdCl::errInvalidAddr, 0, err_msg);
181 }
182 auto query = obj.find('?');
183 if (query != std::string::npos) {
184 obj.erase(query);
185 }
186 if (obj.empty() || obj.back() == '/') {
187 m_logger->Error(kLogXrdClS3, "Cannot open a directory: %s", url.c_str());
188 return XrdCl::XRootDStatus(XrdCl::stError, XrdCl::errErrorResponse, kXR_isDirectory, "Cannot open a directory");
189 }
190 }
191
192 auto [st, https_url, fs] = GetFileHandle(url);
193 if (!st.IsOK()) {
194 return st;
195 }
196
197 return fs->Open(https_url, flags, mode, new OpenResponseHandler(&m_is_opened, handler), timeout);
198}
@ kXR_isDirectory
static bool GenerateHttpUrl(const std::string &s3_url, std::string &https_url, std::string *obj_result, std::string &err_msg)
virtual bool IsOpen() const override
const uint64_t kLogXrdClS3
const uint16_t errInvalidAddr
const uint16_t errErrorResponse
const uint16_t stError
An error occurred that could potentially be retried.
const uint16_t errInvalidOp
@ Write
Open only for writing.
@ Update
Open for reading and writing.

References XrdCl::OpenFlags::Delete, XrdCl::errErrorResponse, XrdCl::errInvalidAddr, XrdCl::errInvalidOp, XrdClS3::Factory::GenerateHttpUrl(), IsOpen(), XrdClS3::kLogXrdClS3, kXR_isDirectory, XrdCl::OpenFlags::New, XrdCl::stError, XrdCl::OpenFlags::Update, and XrdCl::OpenFlags::Write.

Here is the call graph for this function:

◆ PgRead()

XrdCl::XRootDStatus File::PgRead ( uint64_t offset,
uint32_t size,
void * buffer,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl:File PgRead

Reimplemented from XrdCl::FilePlugIn.

Definition at line 201 of file XrdClS3File.cc.

206{
207 return m_wrapped_file->PgRead(offset, size, buffer, handler, timeout);
208}

◆ Read()

XrdCl::XRootDStatus File::Read ( uint64_t offset,
uint32_t size,
void * buffer,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Read

Reimplemented from XrdCl::FilePlugIn.

Definition at line 211 of file XrdClS3File.cc.

216{
217
218 return m_wrapped_file->Read(offset, size, buffer, handler, timeout);
219}

◆ SetProperty()

bool File::SetProperty ( const std::string & name,
const std::string & value )
overridevirtual
See also
XrdCl::File::SetProperty

Reimplemented from XrdCl::FilePlugIn.

Definition at line 222 of file XrdClS3File.cc.

224{
225 std::unique_lock lock(m_properties_mutex);
226 m_properties[name] = value;
227 return true;
228}

◆ Stat()

XrdCl::XRootDStatus File::Stat ( bool force,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Stat

Reimplemented from XrdCl::FilePlugIn.

Definition at line 231 of file XrdClS3File.cc.

234{
235 return m_wrapped_file->Stat(force, handler, timeout);
236}

◆ VectorRead()

XrdCl::XRootDStatus File::VectorRead ( const XrdCl::ChunkList & chunks,
void * buffer,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::VectorRead

Reimplemented from XrdCl::FilePlugIn.

Definition at line 239 of file XrdClS3File.cc.

243{
244 return m_wrapped_file->VectorRead(chunks, buffer, handler, timeout);
245}

◆ Write() [1/2]

XrdCl::XRootDStatus File::Write ( uint64_t offset,
uint32_t size,
const void * buffer,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Write

Reimplemented from XrdCl::FilePlugIn.

Definition at line 248 of file XrdClS3File.cc.

253{
254 return m_wrapped_file->Write(offset, size, buffer, handler, timeout);
255}

◆ Write() [2/2]

XrdCl::XRootDStatus File::Write ( uint64_t offset,
XrdCl::Buffer && buffer,
XrdCl::ResponseHandler * handler,
time_t timeout )
overridevirtual
See also
XrdCl::File::Write

Reimplemented from XrdCl::FilePlugIn.

Definition at line 258 of file XrdClS3File.cc.

262{
263 return m_wrapped_file->Write(offset, std::move(buffer), handler, timeout);
264}

The documentation for this class was generated from the following files: