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

#include <XrdClHttpOps.hh>

Inheritance diagram for XrdClHttp::CurlOptionsOp:
Collaboration diagram for XrdClHttp::CurlOptionsOp:

Public Member Functions

 CurlOptionsOp (CURL *curl, std::shared_ptr< CurlOperation > op, const std::string &url, XrdCl::Log *log, CreateConnCalloutType callout)
virtual ~CurlOptionsOp ()
void Fail (uint16_t errCode, uint32_t errNum, const std::string &) override
std::shared_ptr< CurlOperationGetOperation () const
CURLGetParentCurlHandle () const
virtual HttpVerb GetVerb () const override
void ReleaseHandle () 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 OptionsDone ()
virtual RedirectAction Redirect (std::string &target)
virtual bool RequiresOptions () const
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::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 408 of file XrdClHttpOps.hh.

Constructor & Destructor Documentation

◆ CurlOptionsOp()

XrdClHttp::CurlOptionsOp::CurlOptionsOp ( CURL * curl,
std::shared_ptr< CurlOperation > op,
const std::string & url,
XrdCl::Log * log,
CreateConnCalloutType callout )
inline

Definition at line 410 of file XrdClHttpOps.hh.

411 :
412 CurlOperation(nullptr, url, op->GetHeaderExpiry(), log, callout, {}),
413 m_parent(op),
414 m_parent_curl(curl)
415 {
417 }
std::chrono::steady_clock::time_point m_header_expiry
std::chrono::steady_clock::time_point m_operation_expiry
CurlOperation(XrdCl::ResponseHandler *handler, const std::string &url, struct timespec timeout, XrdCl::Log *log, CreateConnCalloutType, HeaderCallout *header_callout)

References XrdClHttp::CurlOperation::CurlOperation(), and XrdClHttp::CurlOperation::GetHeaderExpiry().

Here is the call graph for this function:

◆ ~CurlOptionsOp()

virtual XrdClHttp::CurlOptionsOp::~CurlOptionsOp ( )
inlinevirtual

Definition at line 419 of file XrdClHttpOps.hh.

419{}

Member Function Documentation

◆ Fail()

void CurlOptionsOp::Fail ( uint16_t errCode,
uint32_t errNum,
const std::string & etext )
overridevirtual

Reimplemented from XrdClHttp::CurlOperation.

Definition at line 26 of file XrdClHttpOpOptions.cc.

26 {
27 CurlOperation::Fail(errCode, errNum, etext);
28 auto &cache = VerbsCache::Instance();
29 cache.Put(m_url, VerbsCache::HttpVerbs(VerbsCache::HttpVerb::kUnknown));
30 // 405 Method Not Supported; indicates that OPTIONS is not understood so
31 // we assume it's highly unlikely that non-HTTP verbs are supported (like
32 // PROPFIND); however, we don't fail the parent operation.
33 //
34 // Since the OPTIONS command is considered advisory, we ignore failures.
35}
const std::string m_url
static VerbsCache & Instance()

References XrdClHttp::CurlOperation::Fail, XrdClHttp::VerbsCache::Instance(), XrdClHttp::VerbsCache::kUnknown, and XrdClHttp::CurlOperation::m_url.

Referenced by XrdClHttp::CurlWorker::Run().

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

◆ GetOperation()

std::shared_ptr< CurlOperation > XrdClHttp::CurlOptionsOp::GetOperation ( ) const
inline

Definition at line 428 of file XrdClHttpOps.hh.

428{return m_parent;}

Referenced by XrdClHttp::CurlWorker::Run().

Here is the caller graph for this function:

◆ GetParentCurlHandle()

CURL * XrdClHttp::CurlOptionsOp::GetParentCurlHandle ( ) const
inline

Definition at line 432 of file XrdClHttpOps.hh.

432{return m_parent_curl;}

Referenced by XrdClHttp::CurlWorker::Run().

Here is the caller graph for this function:

◆ GetVerb()

virtual HttpVerb XrdClHttp::CurlOptionsOp::GetVerb ( ) const
inlineoverridevirtual

◆ ReleaseHandle()

void CurlOptionsOp::ReleaseHandle ( )
overridevirtual

Reimplemented from XrdClHttp::CurlOperation.

Definition at line 53 of file XrdClHttpOpOptions.cc.

54{
55 if (m_curl == nullptr) return;
56 curl_easy_setopt(m_curl.get(), CURLOPT_CUSTOMREQUEST, nullptr);
57 curl_easy_setopt(m_curl.get(), CURLOPT_NOBODY, 0L);
59}
std::unique_ptr< CURL, void(*)(CURL *)> m_curl
virtual void ReleaseHandle()

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

Referenced by XrdClHttp::CurlWorker::Run().

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

◆ Setup()

bool CurlOptionsOp::Setup ( CURL * curl,
CurlWorker & worker )
overridevirtual

Reimplemented from XrdClHttp::CurlOperation.

Definition at line 38 of file XrdClHttpOpOptions.cc.

38 {
39 if (!CurlOperation::Setup(curl, worker)) return false;
40 curl_easy_setopt(m_curl.get(), CURLOPT_CUSTOMREQUEST, "OPTIONS");
41 curl_easy_setopt(m_curl.get(), CURLOPT_NOBODY, 1L);
42
43 return true;
44}
virtual bool Setup(CURL *curl, CurlWorker &)

References XrdClHttp::CurlOperation::m_curl, and XrdClHttp::CurlOperation::Setup().

Here is the call graph for this function:

◆ Success()

void CurlOptionsOp::Success ( )
overridevirtual

Implements XrdClHttp::CurlOperation.

Definition at line 47 of file XrdClHttpOpOptions.cc.

47 {
48 auto &cache = VerbsCache::Instance();
49 cache.Put(m_url, m_headers.GetAllowedVerbs());
50}

References XrdClHttp::VerbsCache::Instance(), XrdClHttp::CurlOperation::m_headers, and XrdClHttp::CurlOperation::m_url.

Referenced by XrdClHttp::CurlWorker::Run().

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

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