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
File * m_file
XrdSysMutex m_mutex
ReadRequest * m_read_req
int m_to_wait

Detailed Description

Definition at line 190 of file XrdPfcFile.hh.

Constructor & Destructor Documentation

◆ DirectResponseHandler()

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

Definition at line 200 of file XrdPfcFile.hh.

200 :
201 m_file(file), m_read_req(rreq), m_to_wait(to_wait)
202 {}

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 1823 of file XrdPfcFile.cc.

1824{
1825 m_mutex.Lock();
1826
1827 int n_left = --m_to_wait;
1828
1829 if (res < 0) {
1830 if (m_errno == 0) m_errno = res; // store first reported error
1831 } else {
1832 m_bytes_read += res;
1833 }
1834
1835 m_mutex.UnLock();
1836
1837 if (n_left == 0)
1838 {
1839 m_file->ProcessDirectReadFinished(m_read_req, m_bytes_read, m_errno);
1840 delete this;
1841 }
1842}

References XrdSysMutex::Lock(), m_bytes_read, m_errno, m_file, m_mutex, m_read_req, m_to_wait, and XrdSysMutex::UnLock().

Here is the call graph for this function:

Member Data Documentation

◆ m_bytes_read

int XrdPfc::DirectResponseHandler::m_bytes_read = 0

Definition at line 197 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_errno

int XrdPfc::DirectResponseHandler::m_errno = 0

Definition at line 198 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_file

File* XrdPfc::DirectResponseHandler::m_file

Definition at line 194 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().

◆ m_mutex

XrdSysMutex XrdPfc::DirectResponseHandler::m_mutex

Definition at line 193 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_read_req

ReadRequest* XrdPfc::DirectResponseHandler::m_read_req

Definition at line 195 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().

◆ m_to_wait

int XrdPfc::DirectResponseHandler::m_to_wait

Definition at line 196 of file XrdPfcFile.hh.

Referenced by DirectResponseHandler(), and Done().


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