Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/netwerk/cache2/CacheIndexIterator.h
Line
Count
Source (jump to first uncovered line)
1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5
#ifndef CacheIndexIterator__h__
6
#define CacheIndexIterator__h__
7
8
#include "nsTArray.h"
9
#include "nsCOMPtr.h"
10
#include "nsAutoPtr.h"
11
#include "mozilla/SHA1.h"
12
13
namespace mozilla {
14
namespace net {
15
16
class CacheIndex;
17
struct CacheIndexRecord;
18
19
class CacheIndexIterator
20
{
21
public:
22
  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CacheIndexIterator)
23
24
  CacheIndexIterator(CacheIndex *aIndex, bool aAddNew);
25
26
protected:
27
  virtual ~CacheIndexIterator();
28
29
public:
30
  // Returns a hash of a next entry. If there is no entry NS_ERROR_NOT_AVAILABLE
31
  // is returned and the iterator is closed. Other error is returned when the
32
  // iterator is closed for other reason, e.g. shutdown.
33
  nsresult GetNextHash(SHA1Sum::Hash *aHash);
34
35
  // Closes the iterator. This means the iterator is removed from the list of
36
  // iterators in CacheIndex.
37
  nsresult Close();
38
39
protected:
40
  friend class CacheIndex;
41
42
  nsresult CloseInternal(nsresult aStatus);
43
44
0
  bool ShouldBeNewAdded() { return mAddNew; }
45
  virtual void AddRecord(CacheIndexRecord *aRecord);
46
  bool RemoveRecord(CacheIndexRecord *aRecord);
47
  bool ReplaceRecord(CacheIndexRecord *aOldRecord,
48
                     CacheIndexRecord *aNewRecord);
49
50
  nsresult                     mStatus;
51
  RefPtr<CacheIndex>           mIndex;
52
  nsTArray<CacheIndexRecord *> mRecords;
53
  bool                         mAddNew;
54
};
55
56
} // namespace net
57
} // namespace mozilla
58
59
#endif