xrootd
XrdPfcIO.hh
Go to the documentation of this file.
1 #ifndef __XRDPFC_CACHE_IO_HH__
2 #define __XRDPFC_CACHE_IO_HH__
3 
4 class XrdSysTrace;
5 
6 #include "XrdPfc.hh"
7 #include "XrdOuc/XrdOucCache.hh"
10 
11 namespace XrdPfc
12 {
13 //----------------------------------------------------------------------------
15 //----------------------------------------------------------------------------
16 class IO : public XrdOucCacheIO
17 {
18 public:
19  IO (XrdOucCacheIO *io, Cache &cache);
20 
22  virtual XrdOucCacheIO *Base() { return m_io; }
23 
25  virtual const char *Path() { return m_io->Path(); }
26 
27  using XrdOucCacheIO::Sync;
28 
29  virtual int Sync() { return 0; }
30 
32 
33  virtual int Trunc(long long Offset) { return -ENOTSUP; }
34 
36 
37  virtual int Write(char *Buffer, long long Offset, int Length) { return -ENOTSUP; }
38 
39  virtual void Update(XrdOucCacheIO &iocp);
40 
41  // Detach is virtual from XrdOucCacheIO, here it is split
42  // into abstract ioActive() and DetachFinalize().
43  bool Detach(XrdOucCacheIOCD &iocdP) /* final */;
44 
45  virtual bool ioActive() = 0;
46  virtual void DetachFinalize() = 0;
47 
48  const char* GetLocation() { return m_io->Location(false); }
50 
52 
53 protected:
55  const char *m_traceID;
56 
57  const char* GetPath() { return m_io->Path(); }
58  std::string GetFilename() { return XrdCl::URL(GetPath()).GetPath(); }
59  const char* RefreshLocation() { return m_io->Location(true); }
60 
61 private:
64 
66 };
67 }
68 
69 #endif
XrdPfc::IO::Detach
bool Detach(XrdOucCacheIOCD &iocdP)
XrdOucCacheIO
Definition: XrdOucCache.hh:105
XrdSysMutex
Definition: XrdSysPthread.hh:166
XrdSysPthread.hh
XrdPfc::IO::m_cache
Cache & m_cache
reference to Cache needed in detach
Definition: XrdPfcIO.hh:54
XrdPfc::Cache
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
Definition: XrdPfc.hh:264
XrdPfc::Cache::GetTrace
XrdSysTrace * GetTrace()
Definition: XrdPfc.hh:389
XrdPfc::IO
Base cache-io class that implements XrdOucCacheIO abstract methods.
Definition: XrdPfcIO.hh:17
XrdOucCacheIO::Path
virtual const char * Path()=0
XrdPfc::IO::GetLocation
const char * GetLocation()
Definition: XrdPfcIO.hh:48
XrdPfc::IO::DetachFinalize
virtual void DetachFinalize()=0
XrdOucCacheIO::Trunc
virtual int Trunc(long long offs)=0
XrdPfc::IO::Trunc
virtual int Trunc(long long Offset)
Definition: XrdPfcIO.hh:33
XrdPfc::IO::GetPath
const char * GetPath()
Definition: XrdPfcIO.hh:57
XrdPfc::IO::SetInput
void SetInput(XrdOucCacheIO *)
XrdOucCacheIO::Location
virtual const char * Location(bool refresh=false)
Definition: XrdOucCache.hh:161
XrdOucCacheIOCD
Definition: XrdOucCache.hh:82
XrdPfc::IO::RefreshLocation
const char * RefreshLocation()
Definition: XrdPfcIO.hh:59
XrdOucCacheIO::Write
virtual int Write(char *buff, long long offs, int wlen)=0
XrdPfc::IO::ioActive
virtual bool ioActive()=0
XrdPfc::IO::m_io
XrdOucCacheIO * m_io
original data source
Definition: XrdPfcIO.hh:62
XrdCl::URL::GetPath
const std::string & GetPath() const
Get the path.
Definition: XrdClURL.hh:212
XrdPfc.hh
XrdPfc::IO::GetInput
XrdOucCacheIO * GetInput()
XrdClDefaultEnv.hh
XrdPfc::IO::Sync
virtual int Sync()
Definition: XrdPfcIO.hh:29
XrdOucCacheIO::Sync
virtual int Sync()=0
XrdPfc::IO::Update
virtual void Update(XrdOucCacheIO &iocp)
XrdOucCache.hh
XrdCl::URL
URL representation.
Definition: XrdClURL.hh:31
XrdPfc::IO::updMutex
XrdSysMutex updMutex
Definition: XrdPfcIO.hh:63
XrdPfc
Definition: XrdPfc.hh:41
XrdSysTrace
Definition: XrdSysTrace.hh:49
XrdPfc::IO::GetFilename
std::string GetFilename()
Definition: XrdPfcIO.hh:58
XrdPfc::IO::IO
IO(XrdOucCacheIO *io, Cache &cache)
XrdPfc::IO::Write
virtual int Write(char *Buffer, long long Offset, int Length)
Definition: XrdPfcIO.hh:37
XrdPfc::IO::m_traceID
const char * m_traceID
Definition: XrdPfcIO.hh:55
XrdPfc::IO::Base
virtual XrdOucCacheIO * Base()
Original data source.
Definition: XrdPfcIO.hh:22
XrdPfc::IO::Path
virtual const char * Path()
Original data source URL.
Definition: XrdPfcIO.hh:25
XrdPfc::IO::GetTrace
XrdSysTrace * GetTrace()
Definition: XrdPfcIO.hh:49