XRootD
Loading...
Searching...
No Matches
XrdClHttp::CurlPrefetchOpenOp Class Reference

#include <XrdClHttpOps.hh>

+ Inheritance diagram for XrdClHttp::CurlPrefetchOpenOp:
+ Collaboration diagram for XrdClHttp::CurlPrefetchOpenOp:

Public Member Functions

 CurlPrefetchOpenOp (XrdClHttp::File &file, XrdCl::ResponseHandler *handler, std::shared_ptr< XrdCl::ResponseHandler > default_handler, const std::string &url, struct timespec timeout, const std::pair< uint64_t, uint64_t > &op, char *buffer, size_t sz, XrdCl::Log *logger, CreateConnCalloutType callout, HeaderCallout *header_callout)
 
virtual void Pause () override
 
- Public Member Functions inherited from XrdClHttp::CurlReadOp
 CurlReadOp (XrdCl::ResponseHandler *handler, std::shared_ptr< XrdCl::ResponseHandler > default_handler, const std::string &url, struct timespec timeout, const std::pair< uint64_t, uint64_t > &op, char *buffer, size_t sz, XrdCl::Log *logger, CreateConnCalloutType callout, HeaderCallout *header_callout)
 
virtual ~CurlReadOp ()
 
bool Continue (std::shared_ptr< CurlOperation > op, XrdCl::ResponseHandler *handler, char *buffer, size_t buffer_size)
 
bool ContinueHandle () override
 
void Fail (uint16_t errCode, uint32_t errNum, const std::string &msg) override
 
virtual HttpVerb GetVerb () const override
 
void ReleaseHandle () override
 
virtual void SetContinueQueue (std::shared_ptr< XrdClHttp::HandlerQueue > queue) 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 ()
 
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
 
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::CurlReadOp
char * m_buffer {nullptr}
 
size_t m_buffer_size {0}
 
std::shared_ptr< XrdClHttp::HandlerQueuem_continue_queue
 
std::string m_err_msg
 
std::pair< uint64_t, uint64_t > m_op
 
uint64_t m_written {0}
 
- 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 681 of file XrdClHttpOps.hh.

Constructor & Destructor Documentation

◆ CurlPrefetchOpenOp()

XrdClHttp::CurlPrefetchOpenOp::CurlPrefetchOpenOp ( XrdClHttp::File & file,
XrdCl::ResponseHandler * handler,
std::shared_ptr< XrdCl::ResponseHandler > default_handler,
const std::string & url,
struct timespec timeout,
const std::pair< uint64_t, uint64_t > & op,
char * buffer,
size_t sz,
XrdCl::Log * logger,
CreateConnCalloutType callout,
HeaderCallout * header_callout )
inline

Definition at line 683 of file XrdClHttpOps.hh.

686 : CurlReadOp(handler, default_handler, url, timeout, op, buffer, sz, logger, callout, header_callout), m_file(file)
687 {}
CurlReadOp(XrdCl::ResponseHandler *handler, std::shared_ptr< XrdCl::ResponseHandler > default_handler, const std::string &url, struct timespec timeout, const std::pair< uint64_t, uint64_t > &op, char *buffer, size_t sz, XrdCl::Log *logger, CreateConnCalloutType callout, HeaderCallout *header_callout)

References XrdClHttp::CurlReadOp::CurlReadOp().

+ Here is the call graph for this function:

Member Function Documentation

◆ Pause()

void CurlPrefetchOpenOp::Pause ( )
overridevirtual

Reimplemented from XrdClHttp::CurlReadOp.

Definition at line 104 of file XrdClHttpOpOpen.cc.

105{
106 if (m_first_pause) {
107 m_first_pause = false;
108 } else {
110 return;
111 }
112
113 // Set the various file-open properties. Note that we only invoke Pause() if the status code
114 // of the response is 200.
115 char *url = nullptr;
116 curl_easy_getinfo(m_curl.get(), CURLINFO_EFFECTIVE_URL, &url);
117 if (url) {
118 m_file.SetProperty("LastURL", url);
119 }
120
121 auto length = m_headers.GetContentLength();
122 m_file.SetProperty("XrdClHttpPrefetchSize", std::to_string(length));
123
124 if (!m_headers.GetETag().empty())
125 {
126 std::string etag = m_headers.GetETag();
127 m_file.SetProperty("ETag", etag);
128 }
129 m_file.SetProperty("Cache-Control", m_headers.GetCacheControl());
130
132}
std::unique_ptr< CURL, void(*)(CURL *)> m_curl

References XrdClHttp::CurlOperation::m_curl, XrdClHttp::CurlOperation::m_headers, and XrdClHttp::CurlReadOp::Pause().

+ Here is the call graph for this function:

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