XRootD
Loading...
Searching...
No Matches
XrdPosixFileRH.hh
Go to the documentation of this file.
1
#ifndef __POSIX_FILERH_HH__
2
#define __POSIX_FILERH_HH__
3
/******************************************************************************/
4
/* */
5
/* X r d P o s i x F l e R H . h h */
6
/* */
7
/* (c) 2016 by the Board of Trustees of the Leland Stanford, Jr., University */
8
/* All Rights Reserved */
9
/* Produced by Andrew Hanushevsky for Stanford University under contract */
10
/* DE-AC02-76-SFO0515 with the Department of Energy */
11
/* */
12
/* This file is part of the XRootD software suite. */
13
/* */
14
/* XRootD is free software: you can redistribute it and/or modify it under */
15
/* the terms of the GNU Lesser General Public License as published by the */
16
/* Free Software Foundation, either version 3 of the License, or (at your */
17
/* option) any later version. */
18
/* */
19
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22
/* License for more details. */
23
/* */
24
/* You should have received a copy of the GNU Lesser General Public License */
25
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27
/* */
28
/* The copyright holder's institutional names and contributor's names may not */
29
/* be used to endorse or promote products derived from this software without */
30
/* specific prior written permission of the institution or contributor. */
31
/******************************************************************************/
32
33
#include <cstdint>
34
#include <vector>
35
36
#include "
Xrd/XrdJob.hh
"
37
#include "
XrdCl/XrdClFile.hh
"
38
#include "
XrdSys/XrdSysPthread.hh
"
39
40
class
XrdOucCacheIOCB
;
41
class
XrdPosixFile
;
42
43
/******************************************************************************/
44
/* X r d P o s i x F i l e R H */
45
/******************************************************************************/
46
47
class
XrdPosixFileRH
:
public
XrdJob
,
48
public
XrdCl::ResponseHandler
49
{
50
public
:
51
52
enum
ioType
{
nonIO
= 0,
isRead
= 1,
isReadV
= 2,
isWrite
= 3,
53
isReadP
= 4,
isWriteP
= 5};
54
55
static
XrdPosixFileRH
*
Alloc
(
XrdOucCacheIOCB
*cbp,
XrdPosixFile
*fp,
56
long
long
offs,
int
xResult,
ioType
typeIO);
57
58
void
DoIt
() {theCB->Done(result);
Recycle
();}
59
60
void
HandleResponse
(
XrdCl::XRootDStatus
*status,
61
XrdCl::AnyObject
*response);
62
63
void
Recycle
();
64
65
inline
void
setCSVec
(std::vector<uint32_t> *csv,
int
*csf,
66
bool
fcs=
false
)
67
{csVec = csv; csfix = csf; csFrc = fcs;}
68
69
static
void
SetMax
(
int
mval) {maxFree = mval;}
70
71
void
Sched
(
int
result);
72
73
private
:
74
XrdPosixFileRH
() : theCB(0), theFile(0), csVec(0), csfix(0),
75
result(0),typeIO(
nonIO
), csFrc(false) {}
76
virtual
~XrdPosixFileRH
() {}
77
78
static
XrdSysMutex
myMutex;
79
static
XrdPosixFileRH
*freeRH;
80
static
int
numFree;
81
static
int
maxFree;
82
83
union
{
XrdOucCacheIOCB
*theCB;
84
XrdPosixFileRH
*next;
85
};
86
XrdPosixFile
*theFile;
87
std::vector<uint32_t> *csVec;
88
int
*csfix;
89
long
long
offset;
90
int
result;
91
ioType
typeIO;
92
bool
csFrc;
93
};
94
#endif
XrdClFile.hh
XrdJob.hh
XrdSysPthread.hh
XrdCl::AnyObject
Definition
XrdClAnyObject.hh:33
XrdCl::ResponseHandler
Handle an async response.
Definition
XrdClXRootDResponses.hh:1126
XrdCl::XRootDStatus
Request status.
Definition
XrdClXRootDResponses.hh:219
XrdJob
Definition
XrdJob.hh:43
XrdOucCacheIOCB
Definition
XrdOucCache.hh:53
XrdPosixFileRH
Definition
XrdPosixFileRH.hh:49
XrdPosixFileRH::SetMax
static void SetMax(int mval)
Definition
XrdPosixFileRH.hh:69
XrdPosixFileRH::setCSVec
void setCSVec(std::vector< uint32_t > *csv, int *csf, bool fcs=false)
Definition
XrdPosixFileRH.hh:65
XrdPosixFileRH::Sched
void Sched(int result)
Definition
XrdPosixFileRH.cc:185
XrdPosixFileRH::ioType
ioType
Definition
XrdPosixFileRH.hh:52
XrdPosixFileRH::isWriteP
@ isWriteP
Definition
XrdPosixFileRH.hh:53
XrdPosixFileRH::isReadP
@ isReadP
Definition
XrdPosixFileRH.hh:53
XrdPosixFileRH::nonIO
@ nonIO
Definition
XrdPosixFileRH.hh:52
XrdPosixFileRH::isRead
@ isRead
Definition
XrdPosixFileRH.hh:52
XrdPosixFileRH::isReadV
@ isReadV
Definition
XrdPosixFileRH.hh:52
XrdPosixFileRH::isWrite
@ isWrite
Definition
XrdPosixFileRH.hh:52
XrdPosixFileRH::Recycle
void Recycle()
Definition
XrdPosixFileRH.cc:168
XrdPosixFileRH::Alloc
static XrdPosixFileRH * Alloc(XrdOucCacheIOCB *cbp, XrdPosixFile *fp, long long offs, int xResult, ioType typeIO)
Definition
XrdPosixFileRH.cc:76
XrdPosixFileRH::DoIt
void DoIt()
Definition
XrdPosixFileRH.hh:58
XrdPosixFileRH::HandleResponse
void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response)
Definition
XrdPosixFileRH.cc:108
XrdPosixFile
Definition
XrdPosixFile.hh:62
XrdSysMutex
Definition
XrdSysPthread.hh:165
XrdPosix
XrdPosixFileRH.hh
Generated by
1.9.8