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"
39
40class XrdOucCacheIOCB;
41class XrdPosixFile;
42
43/******************************************************************************/
44/* X r d P o s i x F i l e R H */
45/******************************************************************************/
46
47class XrdPosixFileRH : public XrdJob,
49{
50public:
51
52enum ioType {nonIO = 0, isRead = 1, isReadV = 2, isWrite = 3,
53 isReadP = 4, isWriteP= 5};
54
56 long long offs, int xResult, ioType typeIO);
57
58 void DoIt() {theCB->Done(result); Recycle();}
59
61 XrdCl::AnyObject *response);
62
63 void Recycle();
64
65inline void setCSVec(std::vector<uint32_t> *csv, int *csf,
66 bool fcs=false)
67 {csVec = csv; csfix = csf; csFrc = fcs;}
68
69static void SetMax(int mval) {maxFree = mval;}
70
71 void Sched(int result);
72
73private:
75 result(0),typeIO(nonIO), csFrc(false) {}
76virtual ~XrdPosixFileRH() {}
77
80static int numFree;
81static int maxFree;
82
85 };
87std::vector<uint32_t> *csVec;
88int *csfix;
89long long offset;
92bool csFrc;
93};
94#endif
Definition XrdClAnyObject.hh:33
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdJob.hh:43
Definition XrdOucCache.hh:53
virtual void Done(int result)=0
Definition XrdPosixFileRH.hh:49
virtual ~XrdPosixFileRH()
Definition XrdPosixFileRH.hh:76
int result
Definition XrdPosixFileRH.hh:90
static XrdPosixFileRH * freeRH
Definition XrdPosixFileRH.hh:79
int * csfix
Definition XrdPosixFileRH.hh:88
std::vector< uint32_t > * csVec
Definition XrdPosixFileRH.hh:87
static void SetMax(int mval)
Definition XrdPosixFileRH.hh:69
void setCSVec(std::vector< uint32_t > *csv, int *csf, bool fcs=false)
Definition XrdPosixFileRH.hh:65
long long offset
Definition XrdPosixFileRH.hh:89
static int maxFree
Definition XrdPosixFileRH.hh:81
XrdPosixFile * theFile
Definition XrdPosixFileRH.hh:86
void Sched(int result)
static int numFree
Definition XrdPosixFileRH.hh:80
XrdPosixFileRH()
Definition XrdPosixFileRH.hh:74
XrdPosixFileRH * next
Definition XrdPosixFileRH.hh:84
static XrdSysMutex myMutex
Definition XrdPosixFileRH.hh:78
ioType typeIO
Definition XrdPosixFileRH.hh:91
XrdOucCacheIOCB * theCB
Definition XrdPosixFileRH.hh:83
ioType
Definition XrdPosixFileRH.hh:52
@ isWriteP
Definition XrdPosixFileRH.hh:53
@ isReadP
Definition XrdPosixFileRH.hh:53
@ nonIO
Definition XrdPosixFileRH.hh:52
@ isRead
Definition XrdPosixFileRH.hh:52
@ isReadV
Definition XrdPosixFileRH.hh:52
@ isWrite
Definition XrdPosixFileRH.hh:52
static XrdPosixFileRH * Alloc(XrdOucCacheIOCB *cbp, XrdPosixFile *fp, long long offs, int xResult, ioType typeIO)
void DoIt()
Definition XrdPosixFileRH.hh:58
void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response)
bool csFrc
Definition XrdPosixFileRH.hh:92
Definition XrdPosixFile.hh:62
Definition XrdSysPthread.hh:165