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"
11
12namespace XrdPfc
13{
14//----------------------------------------------------------------------------
16//----------------------------------------------------------------------------
17class IO : public XrdOucCacheIO
18{
19public:
20 IO (XrdOucCacheIO *io, Cache &cache);
21
23 virtual XrdOucCacheIO *Base() { return m_io; }
24
26 const char *Path() override { return m_io->Path(); }
27
29 int Sync() override { return 0; }
30
32 int Trunc(long long Offset) override { return -ENOTSUP; }
33
35 int Write(char *Buffer, long long Offset, int Length) override { return -ENOTSUP; }
36
37 void Update(XrdOucCacheIO &iocp) override;
38
39 // Detach is virtual from XrdOucCacheIO, here it is split
40 // into abstract ioActive() and DetachFinalize().
41 bool Detach(XrdOucCacheIOCD &iocdP) final;
42
43 virtual bool ioActive() = 0;
44 virtual void DetachFinalize() = 0;
45
46 const char* GetLocation() { return m_io->Location(false); }
48
50
51protected:
53 const char *m_traceID;
54
55 const char* GetPath() { return m_io->Path(); }
56 std::string GetFilename() { return XrdCl::URL(GetPath()).GetPath(); }
57 const char* RefreshLocation() { return m_io->Location(true); }
58
59 unsigned short ObtainReadSid() { return m_read_seqid++; }
60
61 struct ReadReqRHCond : public ReadReqRH
62 {
64 int m_retval {0};
65
67
68 void Done(int result) override
69 { m_cond.Lock(); m_retval = result; m_cond.Signal(); m_cond.UnLock(); }
70 };
71
73
74private:
77
79
80 // Variables used by File to store IO-relates state. Managed under
81 // File::m_state_cond mutex.
82 friend class File;
83
84 time_t m_attach_time {0}; // Set by File::AddIO()
87 bool m_in_detach {false};
88};
89}
90
91#endif
URL representation.
Definition XrdClURL.hh:31
const std::string & GetPath() const
Get the path.
Definition XrdClURL.hh:212
Definition XrdOucCache.hh:82
Definition XrdOucCache.hh:105
virtual int Write(char *buff, long long offs, int wlen)=0
virtual int Sync()=0
virtual int Trunc(long long offs)=0
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
Definition XrdPfc.hh:264
XrdSysTrace * GetTrace()
Definition XrdPfc.hh:389
Definition XrdPfcFile.hh:213
Base cache-io class that implements some XrdOucCacheIO abstract methods.
Definition XrdPfcIO.hh:18
bool m_in_detach
Definition XrdPfcIO.hh:87
const char * Path() override
Original data source URL.
Definition XrdPfcIO.hh:26
int Sync() override
Definition XrdPfcIO.hh:29
std::string GetFilename()
Definition XrdPfcIO.hh:56
const char * GetPath()
Definition XrdPfcIO.hh:55
time_t m_attach_time
Definition XrdPfcIO.hh:84
int Trunc(long long Offset) override
Definition XrdPfcIO.hh:32
const char * m_traceID
Definition XrdPfcIO.hh:53
Cache & m_cache
reference to Cache object
Definition XrdPfcIO.hh:52
RAtomic_int m_active_read_reqs
number of active read requests
Definition XrdPfcIO.hh:72
XrdOucCacheIO * GetInput()
int m_active_prefetches
Definition XrdPfcIO.hh:85
XrdSysTrace * GetTrace()
Definition XrdPfcIO.hh:47
XrdSys::RAtomic< XrdOucCacheIO * > m_io
original data source
Definition XrdPfcIO.hh:75
void SetInput(XrdOucCacheIO *)
const char * RefreshLocation()
Definition XrdPfcIO.hh:57
virtual bool ioActive()=0
virtual XrdOucCacheIO * Base()
Original data source.
Definition XrdPfcIO.hh:23
bool m_allow_prefetching
Definition XrdPfcIO.hh:86
int Write(char *Buffer, long long Offset, int Length) override
Definition XrdPfcIO.hh:35
const char * GetLocation()
Definition XrdPfcIO.hh:46
RAtomic_ushort m_read_seqid
sequential read id (for logging)
Definition XrdPfcIO.hh:76
unsigned short ObtainReadSid()
Definition XrdPfcIO.hh:59
virtual void DetachFinalize()=0
void Update(XrdOucCacheIO &iocp) override
IO(XrdOucCacheIO *io, Cache &cache)
bool Detach(XrdOucCacheIOCD &iocdP) final
Definition XrdSysPthread.hh:79
void UnLock()
Definition XrdSysPthread.hh:94
void Lock()
Definition XrdSysPthread.hh:82
void Signal()
Definition XrdSysPthread.hh:84
Definition XrdSysTrace.hh:49
Definition XrdPfc.hh:41
Definition XrdPfcIO.hh:62
XrdSysCondVar m_cond
Definition XrdPfcIO.hh:63
void Done(int result) override
Definition XrdPfcIO.hh:68
int m_retval
Definition XrdPfcIO.hh:64
Definition XrdPfcFile.hh:61
ReadReqRH(unsigned short sid, XrdOucCacheIOCB *iocb)
Definition XrdPfcFile.hh:67