XRootD
Loading...
Searching...
No Matches
XrdPfc::DirectResponseHandler Class Reference

#include <XrdPfcFile.hh>

Inheritance diagram for XrdPfc::DirectResponseHandler:
Collaboration diagram for XrdPfc::DirectResponseHandler:

Public Member Functions

 DirectResponseHandler (File *file, ReadRequest *rreq, int to_wait)
void Done (int result) override
Public Member Functions inherited from XrdOucCacheIOCB
 XrdOucCacheIOCB ()
virtual ~XrdOucCacheIOCB ()

Public Attributes

int m_bytes_read = 0
int m_errno = 0
Filem_file
XrdSysMutex m_mutex
ReadRequestm_read_req
int m_to_wait

Detailed Description

Definition at line 194 of file XrdPfcFile.hh.

Constructor & Destructor Documentation

◆ DirectResponseHandler()

XrdPfc::DirectResponseHandler::DirectResponseHandler ( File * file,
ReadRequest * rreq,
int to_wait )
inline

Definition at line 204 of file XrdPfcFile.hh.

204 :
205 m_file(file), m_read_req(rreq), m_to_wait(to_wait)
206 {}

References m_file, m_read_req, and m_to_wait.

Member Function Documentation

◆ Done()

void DirectResponseHandler::Done ( int result)
overridevirtual

Handle result from a previous async operation.

Parameters
resultis result from a previous operation. Successful results are always values >= 0 while errors are negative values and are always '-errno' indicate the reason for the error.

Implements XrdOucCacheIOCB.

Definition at line 1599 of file XrdPfcFile.cc.

1600{
1601 m_mutex.Lock();
1602
1603 int n_left = --m_to_wait;
1604
1605 if (res < 0) {
1606 if (m_errno == 0) m_errno = res; // store first reported error
1607 } else {
1608 m_bytes_read += res;
1609 }
1610
1611 m_mutex.UnLock();
1612
1613 if (n_left == 0)
1614 {
1615 m_file->ProcessDirectReadFinished(m_read_req, m_bytes_read, m_errno);
1616 delete this;
1617 }
1618}

References m_bytes_read, m_errno, m_file, m_mutex, m_read_req, and m_to_wait.

Member Data Documentation

◆ m_bytes_read

int XrdPfc::DirectResponseHandler::m_bytes_read = 0

Definition at line 201 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_errno

int XrdPfc::DirectResponseHandler::m_errno = 0

Definition at line 202 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_file

File* XrdPfc::DirectResponseHandler::m_file

Definition at line 198 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().

◆ m_mutex

XrdSysMutex XrdPfc::DirectResponseHandler::m_mutex

Definition at line 197 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_read_req

ReadRequest* XrdPfc::DirectResponseHandler::m_read_req

Definition at line 199 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().

◆ m_to_wait

int XrdPfc::DirectResponseHandler::m_to_wait

Definition at line 200 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().


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