xrootd
Loading...
Searching...
No Matches
XrdPfcIOFileBlock.hh
Go to the documentation of this file.
1#ifndef __XRDPFC_IO_FILE_BLOCK_HH__
2#define __XRDPFC_IO_FILE_BLOCK_HH__
3//----------------------------------------------------------------------------------
4// Copyright (c) 2014 by Board of Trustees of the Leland Stanford, Jr., University
5// Author: Alja Mrak-Tadel, Matevz Tadel, Brian Bockelman
6//----------------------------------------------------------------------------------
7// XRootD is free software: you can redistribute it and/or modify
8// it under the terms of the GNU Lesser General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// XRootD is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU Lesser General Public License
18// along with XRootD. If not, see <http://www.gnu.org/licenses/>.
19//----------------------------------------------------------------------------------
20#include <map>
21#include <string>
22
23#include "XrdOuc/XrdOucCache.hh"
25
26#include "XrdPfcIO.hh"
27
28class XrdSysError;
29class XrdOssDF;
30
31namespace XrdPfc
32{
33//----------------------------------------------------------------------------
37//----------------------------------------------------------------------------
38class IOFileBlock : public IO
39{
40public:
42
44
47 bool ioActive() override;
48
51 void DetachFinalize() override;
52
53 //---------------------------------------------------------------------
55 //---------------------------------------------------------------------
57
58 int Read(char *Buffer, long long Offset, int Length) override;
59
60 int Fstat(struct stat &sbuff) override;
61
62 long long FSize() override;
63
64 void Update(XrdOucCacheIO &iocp) override;
65
66private:
67 long long m_blocksize;
68 std::map<int, File*> m_blocks;
73
76 File* newBlockFile(long long off, int blocksize);
78};
79}
80
81#endif
#define stat(a, b)
Definition XrdPosix.hh:96
Definition XrdOss.hh:63
Definition XrdOucCache.hh:105
virtual int Read(char *buff, long long offs, int rlen)=0
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
Definition XrdPfc.hh:264
Definition XrdPfcFile.hh:213
Downloads original file into multiple files, chunked into blocks. Only blocks that are asked for are ...
Definition XrdPfcIOFileBlock.hh:39
XrdSysMutex m_mutex
map mutex
Definition XrdPfcIOFileBlock.hh:69
std::map< int, File * > m_blocks
map of created blocks
Definition XrdPfcIOFileBlock.hh:68
void Update(XrdOucCacheIO &iocp) override
Info m_info
Definition XrdPfcIOFileBlock.hh:71
File * newBlockFile(long long off, int blocksize)
IOFileBlock(XrdOucCacheIO *io, Cache &cache)
int Read(char *Buffer, long long Offset, int Length) override
long long m_blocksize
size of file-block
Definition XrdPfcIOFileBlock.hh:67
struct stat * m_localStat
Definition XrdPfcIOFileBlock.hh:70
XrdOssDF * m_info_file
Definition XrdPfcIOFileBlock.hh:72
int Fstat(struct stat &sbuff) override
void DetachFinalize() override
Abstract virtual method of XrdPfc::IO Called to destruct the IO object after it is no longer used.
bool ioActive() override
Abstract virtual method of XrdPfc::IO Called to check if destruction needs to be done in a separate t...
long long FSize() override
Base cache-io class that implements some XrdOucCacheIO abstract methods.
Definition XrdPfcIO.hh:18
Status of cached file. Can be read from and written into a binary file.
Definition XrdPfcInfo.hh:45
Definition XrdSysError.hh:90
Definition XrdSysPthread.hh:165
Definition XrdPfc.hh:41