XRootD
XrdXrootdPgrwAio.hh
Go to the documentation of this file.
1
#ifndef __XRDXROOTDPGRWAIO_H__
2
#define __XRDXROOTDPGRWAIO_H__
3
/******************************************************************************/
4
/* */
5
/* X r d X r o o t d P g r w A i o . h h */
6
/* */
7
/* (c) 2021 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 "
XrdXrootd/XrdXrootdAioTask.hh
"
34
35
class
XrdXrootdAioPgrw
;
36
class
XrdXrootdPgwBadCS
;
37
38
class
XrdXrootdPgrwAio
:
public
XrdXrootdAioTask
39
{
40
public
:
41
42
static
XrdXrootdPgrwAio
*
Alloc
(
XrdXrootdProtocol
*protP,
43
XrdXrootdResponse
&resp,
44
XrdXrootdFile
*fP,
45
XrdXrootdPgwBadCS
*bcsP=0);
46
47
void
DoIt
()
override
;
48
49
void
Read
(
long
long
offs,
int
dlen)
override
;
50
51
void
Recycle
(
bool
release)
override
;
52
53
int
Write
(
long
long
offs,
int
dlen)
override
;
54
55
static
const
int
aioSZ
= 64*1024;
// 64K I/O size
56
57
private
:
58
59
XrdXrootdPgrwAio
() :
XrdXrootdAioTask
(
"pgaio request"
) {}
60
virtual
~
XrdXrootdPgrwAio
() {}
61
62
bool
CopyF2L_Add2Q(
XrdXrootdAioPgrw
*aioP=0);
63
void
CopyF2L()
override
;
64
int
CopyL2F()
override
;
65
bool
CopyL2F(
XrdXrootdAioBuff
*bP)
override
;
66
bool
SendData(
XrdXrootdAioBuff
*bP,
bool
final
=
false
);
67
int
SendDone();
68
bool
VerCks(
XrdXrootdAioPgrw
*aioP);
69
70
static
const
char
*TraceID;
71
72
XrdXrootdPgwBadCS
*badCSP;
// -> Bad checksum recorder
73
};
74
#endif
XrdXrootdAioTask.hh
XrdXrootdAioBuff
Definition:
XrdXrootdAioBuff.hh:41
XrdXrootdAioPgrw
Definition:
XrdXrootdAioPgrw.hh:48
XrdXrootdAioTask
Definition:
XrdXrootdAioTask.hh:47
XrdXrootdFile
Definition:
XrdXrootdFile.hh:101
XrdXrootdPgrwAio
Definition:
XrdXrootdPgrwAio.hh:39
XrdXrootdPgrwAio::aioSZ
static const int aioSZ
Definition:
XrdXrootdPgrwAio.hh:55
XrdXrootdPgrwAio::DoIt
void DoIt() override
Definition:
XrdXrootdPgrwAio.cc:352
XrdXrootdPgrwAio::Read
void Read(long long offs, int dlen) override
Definition:
XrdXrootdPgrwAio.cc:363
XrdXrootdPgrwAio::Alloc
static XrdXrootdPgrwAio * Alloc(XrdXrootdProtocol *protP, XrdXrootdResponse &resp, XrdXrootdFile *fP, XrdXrootdPgwBadCS *bcsP=0)
Definition:
XrdXrootdPgrwAio.cc:87
XrdXrootdPgrwAio::Write
int Write(long long offs, int dlen) override
Definition:
XrdXrootdPgrwAio.cc:544
XrdXrootdPgrwAio::Recycle
void Recycle(bool release) override
Definition:
XrdXrootdPgrwAio.cc:390
XrdXrootdPgwBadCS
Definition:
XrdXrootdPgwBadCS.hh:37
XrdXrootdProtocol
Definition:
XrdXrootdProtocol.hh:156
XrdXrootdResponse
Definition:
XrdXrootdResponse.hh:49
XrdXrootd
XrdXrootdPgrwAio.hh
Generated by
1.9.1