XRootD
Loading...
Searching...
No Matches
XrdPfcIO.hh
Go to the documentation of this file.
1#ifndef __XRDPFC_CACHE_IO_HH__
2#define __XRDPFC_CACHE_IO_HH__
3
4class XrdSysTrace;
5
6#include "XrdPfc.hh"
9
10namespace XrdPfc
11{
12//----------------------------------------------------------------------------
14//----------------------------------------------------------------------------
15class IO : public XrdOucCacheIO
16{
17public:
18 IO (XrdOucCacheIO *io, Cache &cache);
19
21 virtual XrdOucCacheIO *Base() { return m_io; }
22
24 const char *Path() override { return m_io->Path(); }
25
27 int Sync() override { return 0; }
28
30 int Trunc(long long Offset) override { return -ENOTSUP; }
31
33 int Write(char *Buffer, long long Offset, int Length) override { return -ENOTSUP; }
34
35 void Update(XrdOucCacheIO &iocp) override;
36
37 // Detach is virtual from XrdOucCacheIO, here it is split
38 // into abstract ioActive() and DetachFinalize().
39 bool Detach(XrdOucCacheIOCD &iocdP) final;
40
41 virtual bool ioActive() = 0;
42 virtual void DetachFinalize() = 0;
43
44 const char* GetLocation() { return m_io->Location(false); }
45 XrdSysTrace* GetTrace() { return m_cache.GetTrace(); }
46
48
49protected:
51 const char *m_traceID;
52
53 const char* GetPath() { return m_io->Path(); }
54 std::string GetFilename();
55 const char* RefreshLocation() { return m_io->Location(true); }
56
57 unsigned short ObtainReadSid() { return m_read_seqid++; }
58
59 struct ReadReqRHCond : public ReadReqRH
60 {
62 int m_retval {0};
63
65
66 void Done(int result) override
67 { m_cond.Lock(); m_retval = result; m_cond.Signal(); m_cond.UnLock(); }
68 };
69
71
72private:
74 RAtomic_ushort m_read_seqid;
75
76 void SetInput(XrdOucCacheIO*);
77
78 // Variables used by File to store IO-relates state. Managed under
79 // File::m_state_cond mutex.
80 friend class File;
81
82 time_t m_attach_time {0}; // Set by File::AddIO()
83 int m_active_prefetches {0};
84 bool m_allow_prefetching {true};
85 bool m_in_detach {false};
86
87protected:
89 std::map<int, int> m_error_counts;
91 return m_incomplete_count++ == 0;
92 }
93 bool register_block_error(int res) {
94 return m_error_counts[res]++ == 0;
95 }
96};
97}
98
99#endif
XrdSys::RAtomic< unsigned short > RAtomic_ushort
XrdSys::RAtomic< int > RAtomic_int
virtual int Write(char *buff, long long offs, int wlen)=0
virtual int Sync()=0
XrdOucCacheIO()
Construct and Destructor.
virtual int Trunc(long long offs)=0
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
Definition XrdPfc.hh:152
const char * Path() override
Original data source URL.
Definition XrdPfcIO.hh:24
int Sync() override
Definition XrdPfcIO.hh:27
bool register_incomplete_read()
Definition XrdPfcIO.hh:90
IO(XrdOucCacheIO *io, Cache &cache)
Definition XrdPfcIO.cc:7
int m_incomplete_count
Definition XrdPfcIO.hh:88
std::map< int, int > m_error_counts
Definition XrdPfcIO.hh:89
const char * GetPath()
Definition XrdPfcIO.hh:53
XrdOucCacheIO * GetInput()
Definition XrdPfcIO.cc:31
int Trunc(long long Offset) override
Definition XrdPfcIO.hh:30
const char * m_traceID
Definition XrdPfcIO.hh:51
bool register_block_error(int res)
Definition XrdPfcIO.hh:93
Cache & m_cache
reference to Cache object
Definition XrdPfcIO.hh:50
RAtomic_int m_active_read_reqs
number of active read requests
Definition XrdPfcIO.hh:70
friend class File
Definition XrdPfcIO.hh:80
XrdSysTrace * GetTrace()
Definition XrdPfcIO.hh:45
const char * RefreshLocation()
Definition XrdPfcIO.hh:55
bool Detach(XrdOucCacheIOCD &iocdP) final
Definition XrdPfcIO.cc:43
virtual bool ioActive()=0
virtual XrdOucCacheIO * Base()
Original data source.
Definition XrdPfcIO.hh:21
int Write(char *Buffer, long long Offset, int Length) override
Definition XrdPfcIO.hh:33
const char * GetLocation()
Definition XrdPfcIO.hh:44
void Update(XrdOucCacheIO &iocp) override
Definition XrdPfcIO.cc:17
unsigned short ObtainReadSid()
Definition XrdPfcIO.hh:57
virtual void DetachFinalize()=0
std::string GetFilename()
Definition XrdPfcIO.cc:36
void Done(int result) override
Definition XrdPfcIO.hh:66
ReadReqRH(unsigned short sid, XrdOucCacheIOCB *iocb)
Definition XrdPfcFile.hh:56
ReadReqRH(unsigned short sid, XrdOucCacheIOCB *iocb)
Definition XrdPfcFile.hh:56