XrdFileCacheIOFileBlock.hh

Go to the documentation of this file.
00001 #ifndef __XRDFILECACHE_IO_FILE_BLOCK_HH__
00002 #define __XRDFILECACHE_IO_FILE_BLOCK_HH__
00003 //----------------------------------------------------------------------------------
00004 // Copyright (c) 2014 by Board of Trustees of the Leland Stanford, Jr., University
00005 // Author: Alja Mrak-Tadel, Matevz Tadel, Brian Bockelman
00006 //----------------------------------------------------------------------------------
00007 // XRootD is free software: you can redistribute it and/or modify
00008 // it under the terms of the GNU Lesser General Public License as published by
00009 // the Free Software Foundation, either version 3 of the License, or
00010 // (at your option) any later version.
00011 //
00012 // XRootD is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU Lesser General Public License
00018 // along with XRootD.  If not, see <http://www.gnu.org/licenses/>.
00019 //----------------------------------------------------------------------------------
00020 #include <map>
00021 #include <string>
00022 
00023 #include "XrdOuc/XrdOucCache.hh"
00024 #include "XrdSys/XrdSysPthread.hh"
00025 
00026 #include "XrdFileCache.hh"
00027 #include "XrdFileCachePrefetch.hh"
00028 
00029 class XrdSysError;
00030 class XrdOssDF;
00031 
00032 namespace XrdFileCache
00033 {
00034    //----------------------------------------------------------------------------
00038    //----------------------------------------------------------------------------
00039    class IOFileBlock : public IO
00040    {
00041       public:
00042          //------------------------------------------------------------------------
00044          //------------------------------------------------------------------------
00045          IOFileBlock(XrdOucCacheIO &io, XrdOucCacheStats &stats, Cache &cache);
00046 
00047          //------------------------------------------------------------------------
00049          //------------------------------------------------------------------------
00050          ~IOFileBlock() {}
00051 
00052          //---------------------------------------------------------------------
00056          //---------------------------------------------------------------------
00057          virtual XrdOucCacheIO *Detach();
00058 
00059          //---------------------------------------------------------------------
00061          //---------------------------------------------------------------------
00062          virtual int Read(char *Buffer, long long Offset, int Length);
00063 
00066          virtual bool ioActive();
00067 
00068       private:
00069          long long                  m_blocksize; 
00070          std::map<int, Prefetch*>   m_blocks;    
00071          XrdSysMutex                m_mutex;     
00072 
00073          void GetBlockSizeFromPath();
00074          Prefetch* newBlockPrefetcher(long long off, int blocksize, XrdOucCacheIO* io);
00075    };
00076 }
00077 
00078 #endif

Generated on 5 Oct 2016 for xrootd by  doxygen 1.4.7