00001 #ifndef __XRDFILECACHE_CACHE_IO_HH__ 00002 #define __XRDFILECACHE_CACHE_IO_HH__ 00003 00004 class XrdSysTrace; 00005 00006 #include "XrdFileCache.hh" 00007 #include "XrdOuc/XrdOucCache2.hh" 00008 #include "XrdCl/XrdClDefaultEnv.hh" 00009 #include "XrdSys/XrdSysPthread.hh" 00010 00011 namespace XrdFileCache 00012 { 00013 //---------------------------------------------------------------------------- 00015 //---------------------------------------------------------------------------- 00016 class IO : public XrdOucCacheIO2 00017 { 00018 public: 00019 IO (XrdOucCacheIO2 *io, XrdOucCacheStats &stats, Cache &cache); 00020 00022 virtual XrdOucCacheIO *Base() { return m_io; } 00023 00025 virtual const char *Path() { return m_io->Path(); } 00026 00027 using XrdOucCacheIO2::Sync; 00028 00029 virtual int Sync() { return 0; } 00030 00031 using XrdOucCacheIO2::Trunc; 00032 00033 virtual int Trunc(long long Offset) { return -ENOTSUP; } 00034 00035 using XrdOucCacheIO2::Write; 00036 00037 virtual int Write(char *Buffer, long long Offset, int Length) { return -ENOTSUP; } 00038 00039 virtual void Update(XrdOucCacheIO2 &iocp); 00040 00041 XrdSysTrace* GetTrace() { return m_cache.GetTrace(); } 00042 00043 XrdOucCacheIO2* GetInput(); 00044 00045 protected: 00046 XrdOucCacheStats &m_statsGlobal; 00047 Cache &m_cache; 00048 00049 const char *m_traceID; 00050 std::string m_path; 00051 const char* GetPath() { return m_path.c_str(); } 00052 00053 private: 00054 XrdOucCacheIO2 *m_io; 00055 XrdSysMutex updMutex; 00056 void SetInput(XrdOucCacheIO2*); 00057 }; 00058 } 00059 00060 #endif 00061