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

1687 {
1688  m_mutex.Lock();
1689 
1690  int n_left = --m_to_wait;
1691 
1692  if (res < 0) {
1693  if (m_errno == 0) m_errno = res; // store first reported error
1694  } else {
1695  m_bytes_read += res;
1696  }
1697 
1698  m_mutex.UnLock();
1699 
1700  if (n_left == 0)
1701  {
1702  m_file->ProcessDirectReadFinished(m_read_req, m_bytes_read, m_errno);
1703  delete this;
1704  }
1705 }

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: