1 #ifndef __XRDFILECACHE_FILE_HH__ 2 #define __XRDFILECACHE_FILE_HH__ 43 class BlockResponseHandler;
44 class DirectResponseHandler;
47 struct ReadVBlockListRAM;
48 struct ReadVChunkListRAM;
49 struct ReadVBlockListDisk;
50 struct ReadVChunkListDisk;
110 virtual void Done(
int result);
128 virtual void Done(
int result);
139 File(
const std::string &path,
long long offset,
long long fileSize);
144 static File*
FileOpen(
const std::string &path,
long long offset,
long long fileSize);
161 int Read (
IO *io,
char* buff,
long long offset,
int size);
204 const char*
lPath()
const;
301 char* buff,
long long req_off,
long long req_size);
304 char* req_buf,
long long req_off,
long long req_size);
309 ReadVBlockListRAM& blks_to_process,
310 ReadVBlockListDisk& blks_on_disk,
311 std::vector<XrdOucIOVec>& chunkVec);
313 ReadVBlockListDisk& blks_on_disk);
315 std::vector<ReadVChunkListRAM>& blks_to_process,
316 std::vector<ReadVChunkListRAM>& blks_rocessed);
void dec_ref_count(Block *)
std::string m_filename
filename of data file on disk
Definition: XrdFileCacheFile.hh:234
int VReadFromDisk(const XrdOucIOVec *readV, int n, ReadVBlockListDisk &blks_on_disk)
long long get_offset()
Definition: XrdFileCacheFile.hh:81
PrefetchState_e
Definition: XrdFileCacheFile.hh:224
Definition: XrdFileCacheFile.hh:115
bool m_allow_prefetching
Definition: XrdFileCacheFile.hh:243
File * m_file
Definition: XrdFileCacheFile.hh:64
long long m_fileSize
size of cached disk file for block-based operation
Definition: XrdFileCacheFile.hh:236
Definition: XrdFileCacheFile.hh:224
void ProcessBlockResponse(BlockResponseHandler *brh, int res)
Statistics of disk cache utilisation.
Definition: XrdFileCacheStats.hh:30
Info m_cfi
download status of file blocks and access statistics
Definition: XrdFileCacheFile.hh:232
int m_to_wait
Definition: XrdFileCacheFile.hh:119
Definition: XrdFileCache.hh:40
Stats m_stats
cache statistics, used in IO detach
Definition: XrdFileCacheFile.hh:274
BlockResponseHandler(Block *b, bool prefetch)
Definition: XrdFileCacheFile.hh:107
bool is_finished()
Definition: XrdFileCacheFile.hh:124
int RequestBlocksDirect(IO *io, DirectResponseHandler *handler, IntList_t &blocks, char *buff, long long req_off, long long req_size)
IO * get_io() const
Definition: XrdFileCacheFile.hh:83
Definition: XrdFileCacheFile.hh:59
XrdSysCondVar m_downloadCond
Definition: XrdFileCacheFile.hh:272
bool ioActive(IO *io)
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close()
IoMap_t::iterator IoMap_i
Definition: XrdFileCacheFile.hh:249
char * get_buff(long long pos=0)
Definition: XrdFileCacheFile.hh:79
DirectResponseHandler(int to_wait)
Definition: XrdFileCacheFile.hh:122
bool m_prefetch
Definition: XrdFileCacheFile.hh:70
bool select_current_io_or_disable_prefetching(bool skip_current)
bool is_failed()
Definition: XrdFileCacheFile.hh:126
int get_size()
Definition: XrdFileCacheFile.hh:80
int Read(IO *io, char *buff, long long offset, int size)
Normal read.
Status of cached file. Can be read from and written into a binary file.
Definition: XrdFileCacheInfo.hh:48
bool VReadValidate(const XrdOucIOVec *readV, int n)
XrdOssDF * m_output
file handle for data file on disk
Definition: XrdFileCacheFile.hh:230
int GetPrefetchCountOnIO(IO *io)
bool VReadPreProcess(IO *io, const XrdOucIOVec *readV, int n, ReadVBlockListRAM &blks_to_process, ReadVBlockListDisk &blks_on_disk, std::vector< XrdOucIOVec > &chunkVec)
Block * PrepareBlockRequest(int i, IO *io, bool prefetch)
Definition: XrdSysError.hh:89
File(const std::string &path, long long offset, long long fileSize)
Constructor.
Definition: XrdSysTrace.hh:48
bool overlap(int blk, long long blk_size, long long req_off, int req_size, long long &off, long long &blk_off, long long &size)
int m_non_flushed_cnt
Definition: XrdFileCacheFile.hh:257
bool Open()
Open file handle for data file and info file on local disk.
Base cache-io class that implements XrdOucCacheIO abstract methods.
Definition: XrdFileCacheIO.hh:16
IoMap_i m_current_io
IO object to be used for prefetching.
Definition: XrdFileCacheFile.hh:252
BlockMap_t m_block_map
Definition: XrdFileCacheFile.hh:270
bool m_is_open
open state
Definition: XrdFileCacheFile.hh:228
void set_downloaded()
Definition: XrdFileCacheFile.hh:89
bool isOpen() const
Data and cinfo files are open.
Definition: XrdFileCacheFile.hh:166
Definition: XrdFileCacheFile.hh:240
XrdSysCondVar m_cond
Definition: XrdFileCacheFile.hh:118
void ProcessBlockRequests(BlockList_t &blks, bool prefetch)
int get_ref_cnt()
Definition: XrdFileCacheFile.hh:219
BlockMap_t::iterator BlockMap_i
Definition: XrdFileCacheFile.hh:267
bool m_in_sync
Definition: XrdFileCacheFile.hh:258
IoMap_t m_io_map
Definition: XrdFileCacheFile.hh:251
void Sync()
Sync file cache inf o and output data with disk.
int m_active_prefetches
Definition: XrdFileCacheFile.hh:242
Definition: XrdSysPthread.hh:78
int m_refcnt
Definition: XrdFileCacheFile.hh:67
void RequestSyncOfDetachStats()
Flags that detach stats should be written out in final sync. Called from CacheIO upon Detach.
PrefetchState_e m_prefetchState
Definition: XrdFileCacheFile.hh:276
bool m_for_prefetch
Definition: XrdFileCacheFile.hh:105
Block(File *f, IO *io, long long off, int size, bool m_prefetch)
Definition: XrdFileCacheFile.hh:72
Definition: XrdFileCacheFile.hh:224
std::list< int > IntList_t
Definition: XrdFileCacheFile.hh:260
Definition: XrdOucIOVec.hh:40
Definition: XrdClAnyObject.hh:25
IODetails()
Definition: XrdFileCacheFile.hh:245
bool FinalizeSyncBeforeExit()
Returns true if any of blocks need sync. Called from Cache::dec_ref_cnt on zero ref cnt.
int m_errno
Definition: XrdFileCacheFile.hh:68
int m_ref_cnt
number of references from IO or sync
Definition: XrdFileCacheFile.hh:226
long long GetFileSize()
Definition: XrdFileCacheFile.hh:211
std::string & GetLocalPath()
Definition: XrdFileCacheFile.hh:206
float m_prefetchScore
Definition: XrdFileCacheFile.hh:280
bool is_failed()
Definition: XrdFileCacheFile.hh:87
void BlockRemovedFromWriteQ(Block *)
Handle removal of a block from Cache's write queue.
static const char * m_traceID
Definition: XrdFileCacheFile.hh:284
Definition: XrdFileCacheFile.hh:224
Definition: XrdSysPthread.hh:129
bool is_finished()
Definition: XrdFileCacheFile.hh:85
Definition: XrdOucCache.hh:93
Definition: XrdFileCacheFile.hh:101
std::list< Block * > BlockList_t
Definition: XrdFileCacheFile.hh:263
Definition: XrdFileCacheFile.hh:133
Block * m_block
Definition: XrdFileCacheFile.hh:104
void StopPrefetchingOnIO(IO *io)
bool m_downloaded
Definition: XrdFileCacheFile.hh:69
virtual void Done(int result)
int m_ios_in_detach
Number of IO objects to which we replied false to ioActive() and will be removed soon.
Definition: XrdFileCacheFile.hh:253
void ProcessBlockRequest(Block *b, bool prefetch)
std::vector< int > m_writes_during_sync
Definition: XrdFileCacheFile.hh:256
int m_prefetchHitCnt
Definition: XrdFileCacheFile.hh:279
void set_error(int err)
Definition: XrdFileCacheFile.hh:90
Definition: XrdFileCacheFile.hh:224
const char * lPath() const
Log path.
int inc_ref_cnt()
Definition: XrdFileCacheFile.hh:220
int m_errno
Definition: XrdFileCacheFile.hh:120
int ReadBlocksFromDisk(IntList_t &blocks, char *req_buf, long long req_off, long long req_size)
std::vector< char > m_buff
Definition: XrdFileCacheFile.hh:62
long long m_offset
Definition: XrdFileCacheFile.hh:63
void WriteBlockToDisk(Block *b)
Definition: XrdFileCacheFile.hh:224
static File * FileOpen(const std::string &path, long long offset, long long fileSize)
Static constructor that also does Open. Returns null ptr if Open fails.
Stats & GetStats()
Reference to prefetch statistics.
Definition: XrdFileCacheFile.hh:194
bool m_detachTimeIsLogged
Definition: XrdFileCacheFile.hh:282
XrdOssDF * m_infoFile
file handle for data-info file on disk
Definition: XrdFileCacheFile.hh:231
void reset_error_and_set_io(IO *io)
Definition: XrdFileCacheFile.hh:92
std::map< IO *, IODetails > IoMap_t
Definition: XrdFileCacheFile.hh:248
int m_prefetchReadCnt
Definition: XrdFileCacheFile.hh:278
int dec_ref_cnt()
Definition: XrdFileCacheFile.hh:221
void inc_ref_count(Block *)
IntList_t::iterator IntList_i
Definition: XrdFileCacheFile.hh:261
bool is_ok()
Definition: XrdFileCacheFile.hh:125
long long m_offset
offset of cached file for block-based / hdfs operation
Definition: XrdFileCacheFile.hh:235
bool is_ok()
Definition: XrdFileCacheFile.hh:86
int VReadProcessBlocks(IO *io, const XrdOucIOVec *readV, int n, std::vector< ReadVChunkListRAM > &blks_to_process, std::vector< ReadVChunkListRAM > &blks_rocessed)
IO * m_io
Definition: XrdFileCacheFile.hh:65
virtual void Done(int result)
BlockList_t::iterator BlockList_i
Definition: XrdFileCacheFile.hh:264
int ReadV(IO *io, const XrdOucIOVec *readV, int n)
Vector read from disk if block is already downloaded, else ReadV from client.
float GetPrefetchScore() const
std::map< int, Block * > BlockMap_t
Definition: XrdFileCacheFile.hh:266