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

Constructor & Destructor Documentation

◆ DirectResponseHandler()

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

Definition at line 193 of file XrdPfcFile.hh.

193 :
194 m_file(file), m_read_req(rreq), m_to_wait(to_wait)
195 {}

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

1693{
1694 m_mutex.Lock();
1695
1696 int n_left = --m_to_wait;
1697
1698 if (res < 0) {
1699 if (m_errno == 0) m_errno = res; // store first reported error
1700 } else {
1701 m_bytes_read += res;
1702 }
1703
1704 m_mutex.UnLock();
1705
1706 if (n_left == 0)
1707 {
1708 m_file->ProcessDirectReadFinished(m_read_req, m_bytes_read, m_errno);
1709 delete this;
1710 }
1711}

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

Referenced by Done().

◆ m_errno

int XrdPfc::DirectResponseHandler::m_errno = 0

Definition at line 191 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_file

File* XrdPfc::DirectResponseHandler::m_file

Definition at line 187 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_mutex

XrdSysMutex XrdPfc::DirectResponseHandler::m_mutex

Definition at line 186 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_read_req

ReadRequest* XrdPfc::DirectResponseHandler::m_read_req

Definition at line 188 of file XrdPfcFile.hh.

Referenced by Done().

◆ m_to_wait

int XrdPfc::DirectResponseHandler::m_to_wait

Definition at line 189 of file XrdPfcFile.hh.

Referenced by Done().


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