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 193 of file XrdPfcFile.hh.

Constructor & Destructor Documentation

◆ DirectResponseHandler()

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

Definition at line 203 of file XrdPfcFile.hh.

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

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

1569{
1570 m_mutex.Lock();
1571
1572 int n_left = --m_to_wait;
1573
1574 if (res < 0) {
1575 if (m_errno == 0) m_errno = res; // store first reported error
1576 } else {
1577 m_bytes_read += res;
1578 }
1579
1580 m_mutex.UnLock();
1581
1582 if (n_left == 0)
1583 {
1584 m_file->ProcessDirectReadFinished(m_read_req, m_bytes_read, m_errno);
1585 delete this;
1586 }
1587}

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 200 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_errno

int XrdPfc::DirectResponseHandler::m_errno = 0

Definition at line 201 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_file

File* XrdPfc::DirectResponseHandler::m_file

Definition at line 197 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_mutex

XrdSysMutex XrdPfc::DirectResponseHandler::m_mutex

Definition at line 196 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_read_req

ReadRequest* XrdPfc::DirectResponseHandler::m_read_req

Definition at line 198 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_to_wait

int XrdPfc::DirectResponseHandler::m_to_wait

Definition at line 199 of file XrdPfcFile.hh.

Referenced by Done().


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