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

#include <XrdClHttpOps.hh>

Inheritance diagram for XrdClHttp::CurlPgReadOp:
Collaboration diagram for XrdClHttp::CurlPgReadOp:

Public Member Functions

 CurlPgReadOp (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 buffer_size, XrdCl::Log *logger, CreateConnCalloutType callout, HeaderCallout *header_callout)
virtual ~CurlPgReadOp ()
virtual HttpVerb GetVerb () const override
void Success () 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 void Pause ()
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 745 of file XrdClHttpOps.hh.

Constructor & Destructor Documentation

◆ CurlPgReadOp()

XrdClHttp::CurlPgReadOp::CurlPgReadOp ( 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 buffer_size,
XrdCl::Log * logger,
CreateConnCalloutType callout,
HeaderCallout * header_callout )
inline

Definition at line 747 of file XrdClHttpOps.hh.

751 :
752 CurlReadOp(handler, default_handler, url, timeout, op, buffer, buffer_size, logger, callout, header_callout)
753 {}
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:

◆ ~CurlPgReadOp()

virtual XrdClHttp::CurlPgReadOp::~CurlPgReadOp ( )
inlinevirtual

Definition at line 755 of file XrdClHttpOps.hh.

755{}

Member Function Documentation

◆ GetVerb()

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

Reimplemented from XrdClHttp::CurlReadOp.

Definition at line 759 of file XrdClHttpOps.hh.

References XrdClHttp::CurlOperation::GET.

◆ Success()

void CurlPgReadOp::Success ( )
overridevirtual

Implements XrdClHttp::CurlOperation.

Definition at line 276 of file XrdClHttpOpRead.cc.

277{
278 SetDone(false);
279 if (m_handler == nullptr) {return;}
280 auto status = new XrdCl::XRootDStatus();
281
282 std::vector<uint32_t> cksums;
283 size_t nbpages = m_written / XrdSys::PageSize;
284 if (m_written % XrdSys::PageSize) ++nbpages;
285 cksums.reserve(nbpages);
286
287 auto buffer = m_buffer;
288 size_t size = m_written;
289 for (size_t pg=0; pg<nbpages; ++pg)
290 {
291 auto pgsize = static_cast<size_t>(XrdSys::PageSize);
292 if (pgsize > size) pgsize = size;
293 cksums.push_back(XrdOucCRC::Calc32C(buffer, pgsize));
294 buffer += pgsize;
295 size -= pgsize;
296 }
297
298 auto page_info = new XrdCl::PageInfo(m_op.first, m_written, m_buffer, std::move(cksums));
299 auto obj = new XrdCl::AnyObject();
300 obj->Set(page_info);
301 auto handle = m_handler;
302 m_handler = nullptr;
303 handle->HandleResponse(status, obj);
304}
void SetDone(bool has_failed)
XrdCl::ResponseHandler * m_handler
std::pair< uint64_t, uint64_t > m_op
static uint32_t Calc32C(const void *data, size_t count, uint32_t prevcs=0)
Definition XrdOucCRC.cc:190
static const int PageSize

References XrdOucCRC::Calc32C(), XrdClHttp::CurlReadOp::m_buffer, XrdClHttp::CurlOperation::m_handler, XrdClHttp::CurlReadOp::m_op, XrdClHttp::CurlReadOp::m_written, XrdSys::PageSize, and XrdClHttp::CurlOperation::SetDone().

Here is the call graph for this function:

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