XRootD
Loading...
Searching...
No Matches
XrdClHttp::CurlOpenOp Class Referencefinal

#include <XrdClHttpOps.hh>

Inheritance diagram for XrdClHttp::CurlOpenOp:
Collaboration diagram for XrdClHttp::CurlOpenOp:

Public Member Functions

 CurlOpenOp (XrdCl::ResponseHandler *handler, const std::string &url, struct timespec timeout, XrdCl::Log *logger, XrdClHttp::File *file, bool response_info, CreateConnCalloutType callout, HeaderCallout *header_callout)
virtual ~CurlOpenOp ()
void Fail (uint16_t errCode, uint32_t errNum, const std::string &) override
void ReleaseHandle () override
void Success () override
Public Member Functions inherited from XrdClHttp::CurlStatOp
 CurlStatOp (XrdCl::ResponseHandler *handler, const std::string &url, struct timespec timeout, XrdCl::Log *log, bool response_info, CreateConnCalloutType callout, HeaderCallout *header_callout)
virtual ~CurlStatOp ()
std::pair< int64_t, bool > GetStatInfo ()
virtual HttpVerb GetVerb () const override
virtual void OptionsDone () override
RedirectAction Redirect (std::string &target) override
void ReleaseHandle () override
virtual bool RequiresOptions () const override
bool Setup (CURL *curl, CurlWorker &) override
void Success () override
Public Member Functions inherited from XrdClHttp::CurlOperation
 CurlOperation (const CurlOperation &)=delete
 CurlOperation (XrdCl::ResponseHandler *handler, const std::string &url, std::chrono::steady_clock::time_point expiry, XrdCl::Log *log, CreateConnCalloutType, HeaderCallout *header_callout)
 CurlOperation (XrdCl::ResponseHandler *handler, const std::string &url, struct timespec timeout, XrdCl::Log *log, CreateConnCalloutType, HeaderCallout *header_callout)
virtual ~CurlOperation ()
virtual bool ContinueHandle ()
bool FinishSetup (CURL *curl)
std::pair< XErrorCode, std::string > GetCallbackError () const
CreateConnCalloutType GetConnCalloutFunc () const
std::string GetCurlErrorMessage () const
CURLGetCurlHandle () const
OpError GetError () const
std::chrono::steady_clock::time_point GetHeaderExpiry () const
std::chrono::steady_clock::time_point GetOperationExpiry ()
std::unique_ptr< ResponseInfoGetResponseInfo ()
int GetStatusCode () const
std::string GetStatusMessage () const
bool GetTriedBoker () const
const std::string & GetUrl () const
bool HasFailed () const
bool HeaderTimeoutExpired (const std::chrono::steady_clock::time_point &now)
bool IsDone () const
bool IsPaused () const
bool IsRedirect () const
std::unique_ptr< ResponseInfoMoveResponseInfo ()
bool OperationTimeoutExpired (const std::chrono::steady_clock::time_point &now)
virtual void SetContinueQueue (std::shared_ptr< XrdClHttp::HandlerQueue > queue)
void SetTriedBoker ()
bool StartConnectionCallout (std::string &err)
std::tuple< uint64_t, std::chrono::steady_clock::duration, std::chrono::steady_clock::duration, std::chrono::steady_clock::duration > StatisticsReset ()
bool TransferStalled (uint64_t xfer_bytes, const std::chrono::steady_clock::time_point &now)
bool UseConnectionCallout ()
virtual int WaitSocket ()
virtual int WaitSocketCallback (std::string &err)

Additional Inherited Members

Public Types inherited from XrdClHttp::CurlOperation
using HeaderList = std::vector<std::pair<std::string, std::string>>
enum class  HttpVerb {
  COPY ,
  DELETE ,
  HEAD ,
  GET ,
  MKCOL ,
  OPTIONS ,
  PROPFIND ,
  PUT ,
  Count
}
enum  OpError {
  ErrNone ,
  ErrHeaderTimeout ,
  ErrCallback ,
  ErrOperationTimeout ,
  ErrTransferClientStall ,
  ErrTransferStall ,
  ErrTransferSlow
}
enum class  RedirectAction {
  Fail ,
  Reinvoke ,
  ReinvokeAfterAllow
}
Static Public Member Functions inherited from XrdClHttp::CurlOperation
static void CleanupDnsCache ()
static int GetDefaultSlowRateBytesSec ()
static int GetDefaultStallTimeout ()
static const std::string GetVerbString (HttpVerb)
static void SetSlowRateBytesSec (int rate)
static void SetStallTimeout (const std::chrono::steady_clock::duration &stall_interval)
static void SetStallTimeout (int stall_interval)
Protected Member Functions inherited from XrdClHttp::CurlStatOp
void SuccessImpl (bool returnObj)
Protected Member Functions inherited from XrdClHttp::CurlOperation
int FailCallback (XErrorCode ecode, const std::string &emsg)
void SetDone (bool has_failed)
void SetPaused (bool paused)
void UpdateBytes (uint64_t bytes)
Protected Attributes inherited from XrdClHttp::CurlOperation
std::unique_ptr< CURL, void(*)(CURL *)> m_curl
XrdCl::ResponseHandlerm_handler {nullptr}
HeaderCalloutm_header_callout
std::chrono::steady_clock::time_point m_header_expiry
HeaderParser m_headers
std::vector< std::pair< std::string, std::string > > m_headers_list
XrdCl::Logm_logger
int m_minimum_rate {m_minimum_transfer_rate}
std::chrono::steady_clock::time_point m_operation_expiry
const std::string m_url
Static Protected Attributes inherited from XrdClHttp::CurlOperation
static constexpr int m_default_minimum_rate {1024 * 256}
static int m_minimum_transfer_rate {CurlOperation::m_default_minimum_rate}

Detailed Description

Definition at line 494 of file XrdClHttpOps.hh.

Constructor & Destructor Documentation

◆ CurlOpenOp()

CurlOpenOp::CurlOpenOp ( XrdCl::ResponseHandler * handler,
const std::string & url,
struct timespec timeout,
XrdCl::Log * logger,
XrdClHttp::File * file,
bool response_info,
CreateConnCalloutType callout,
HeaderCallout * header_callout )

Definition at line 30 of file XrdClHttpOpOpen.cc.

33:
34 CurlStatOp(handler, url, timeout, logger, response_info, callout, header_callout),
35 m_file(file)
36{}
CurlStatOp(XrdCl::ResponseHandler *handler, const std::string &url, struct timespec timeout, XrdCl::Log *log, bool response_info, CreateConnCalloutType callout, HeaderCallout *header_callout)

References XrdClHttp::CurlStatOp::CurlStatOp().

Here is the call graph for this function:

◆ ~CurlOpenOp()

virtual XrdClHttp::CurlOpenOp::~CurlOpenOp ( )
inlinevirtual

Definition at line 500 of file XrdClHttpOps.hh.

500{}

Member Function Documentation

◆ Fail()

void CurlOpenOp::Fail ( uint16_t errCode,
uint32_t errNum,
const std::string & msg )
overridevirtual

Reimplemented from XrdClHttp::CurlOperation.

Definition at line 90 of file XrdClHttpOpOpen.cc.

91{
92 // Note: OpenFlags::New is equivalent to O_CREAT | O_EXCL; OpenFlags::Write is equivalent to O_WRONLY | O_CREAT;
93 // OpenFlags::Delete is equivalent to O_CREAT | O_TRUNC;
95 m_logger->Debug(kLogXrdClHttp, "CurlOpenOp succeeds as 404 was expected");
96 SetOpenProperties(false);
97 m_file->SetProperty("ContentLength", "0");
98 SuccessImpl(false);
99 return;
100 }
101 CurlOperation::Fail(errCode, errNum, msg);
102}
@ kXR_NotFound
void SuccessImpl(bool returnObj)
const uint64_t kLogXrdClHttp
const uint16_t errErrorResponse
@ Write
Open only for writing.

References XrdCl::OpenFlags::Delete, XrdCl::errErrorResponse, XrdClHttp::CurlOperation::Fail, XrdClHttp::kLogXrdClHttp, kXR_NotFound, XrdClHttp::CurlOperation::m_logger, XrdCl::OpenFlags::New, XrdClHttp::CurlStatOp::SuccessImpl(), and XrdCl::OpenFlags::Write.

Referenced by Success().

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

◆ ReleaseHandle()

void CurlOpenOp::ReleaseHandle ( )
overridevirtual

Reimplemented from XrdClHttp::CurlOperation.

Definition at line 39 of file XrdClHttpOpOpen.cc.

40{
41 curl_easy_setopt(m_curl.get(), CURLOPT_OPENSOCKETFUNCTION, nullptr);
42 curl_easy_setopt(m_curl.get(), CURLOPT_OPENSOCKETDATA, nullptr);
43 curl_easy_setopt(m_curl.get(), CURLOPT_SOCKOPTFUNCTION, nullptr);
44 curl_easy_setopt(m_curl.get(), CURLOPT_SOCKOPTDATA, nullptr);
46}
std::unique_ptr< CURL, void(*)(CURL *)> m_curl
void ReleaseHandle() override

References XrdClHttp::CurlOperation::m_curl, and XrdClHttp::CurlStatOp::ReleaseHandle().

Here is the call graph for this function:

◆ Success()

void CurlOpenOp::Success ( )
overridevirtual

Implements XrdClHttp::CurlOperation.

Definition at line 73 of file XrdClHttpOpOpen.cc.

74{
75 SetDone(false);
76 SetOpenProperties(true);
77 auto [size, isdir] = GetStatInfo();
78 if (isdir) {
79 m_logger->Error(kLogXrdClHttp, "Cannot open a directory");
80 Fail(XrdCl::errErrorResponse, kXR_isDirectory, "Cannot open a directory");
81 return;
82 }
83 if (size >= 0) {
84 m_file->SetProperty("ContentLength", std::to_string(size));
85 }
86 SuccessImpl(false);
87}
@ kXR_isDirectory
void Fail(uint16_t errCode, uint32_t errNum, const std::string &) override
void SetDone(bool has_failed)
std::pair< int64_t, bool > GetStatInfo()

References XrdCl::errErrorResponse, Fail(), XrdClHttp::CurlStatOp::GetStatInfo(), XrdClHttp::kLogXrdClHttp, kXR_isDirectory, XrdClHttp::CurlOperation::m_logger, XrdClHttp::CurlOperation::SetDone(), and XrdClHttp::CurlStatOp::SuccessImpl().

Here is the call graph for this function:

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