LCOV - code coverage report
Current view: top level - netwerk/cache - nsDiskCacheBlockFile.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /* vim: set sw=4 ts=8 et tw=80 : */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef _nsDiskCacheBlockFile_h_
       8             : #define _nsDiskCacheBlockFile_h_
       9             : 
      10             : #include "mozilla/MemoryReporting.h"
      11             : #include "nsIFile.h"
      12             : #include "nsDiskCache.h"
      13             : 
      14             : /******************************************************************************
      15             :  *  nsDiskCacheBlockFile
      16             :  *
      17             :  *  The structure of a cache block file is a 4096 bytes bit map, followed by
      18             :  *  some number of blocks of mBlockSize.  The creator of a
      19             :  *  nsDiskCacheBlockFile object must provide the block size for a given file.
      20             :  *
      21             :  *****************************************************************************/
      22             : class nsDiskCacheBlockFile {
      23             : public:
      24           0 :     nsDiskCacheBlockFile()
      25           0 :            : mFD(nullptr)
      26             :            , mBitMap(nullptr)
      27             :            , mBlockSize(0)
      28             :            , mBitMapWords(0)
      29             :            , mFileSize(0)
      30           0 :            , mBitMapDirty(false)
      31           0 :             {}
      32           0 :     ~nsDiskCacheBlockFile() { (void) Close(true); }
      33             : 
      34             :     nsresult  Open( nsIFile *  blockFile, uint32_t  blockSize,
      35             :                     uint32_t  bitMapSize, nsDiskCache::CorruptCacheInfo *  corruptInfo);
      36             :     nsresult  Close(bool flush);
      37             : 
      38             :     /*
      39             :      * Trim
      40             :      * Truncates the block file to the end of the last allocated block.
      41             :      */
      42           0 :     nsresult  Trim() { return nsDiskCache::Truncate(mFD, CalcBlockFileSize()); }
      43             :     nsresult  DeallocateBlocks( int32_t  startBlock, int32_t  numBlocks);
      44             :     nsresult  WriteBlocks( void * buffer, uint32_t size, int32_t  numBlocks,
      45             :                            int32_t * startBlock);
      46             :     nsresult  ReadBlocks( void * buffer, int32_t  startBlock, int32_t  numBlocks,
      47             :                           int32_t * bytesRead);
      48             : 
      49             :     size_t   SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf);
      50             : 
      51             : private:
      52             :     nsresult  FlushBitMap();
      53             :     int32_t   AllocateBlocks( int32_t  numBlocks);
      54             :     nsresult  VerifyAllocation( int32_t startBlock, int32_t numBLocks);
      55             :     uint32_t  CalcBlockFileSize();
      56             :     bool   Write(int32_t offset, const void *buf, int32_t amount);
      57             : 
      58             : /**
      59             :  *  Data members
      60             :  */
      61             :     PRFileDesc *                mFD;
      62             :     uint32_t *                  mBitMap;      // XXX future: array of bit map blocks
      63             :     uint32_t                    mBlockSize;
      64             :     uint32_t                    mBitMapWords;
      65             :     int32_t                     mFileSize;
      66             :     bool                        mBitMapDirty;
      67             : };
      68             : 
      69             : #endif // _nsDiskCacheBlockFile_h_

Generated by: LCOV version 1.13