All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CacheModel.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Cache.h"
7 #include "CacheRecord.h"
8 #include <string>
9 #include <map>
10 #include <vector>
11 #include <utility>
12 
13 namespace Eegeo
14 {
15  namespace Web
16  {
17  namespace Cache
18  {
19  class CacheModel
20  {
21  public:
22  CacheModel();
23  virtual ~CacheModel();
24 
25  void Clear();
26  bool ContainsUrl(const std::string& url) const;
27  bool TryGetCacheRecord(const std::string& url, CacheRecord& out_cacheRecord) const;
28  void Insert(const CacheRecord& cacheRecord);
29  bool Remove(const std::string& url);
30  bool ReplaceOrInsert(const CacheRecord& cacheRecord);
31 
32  void GetCacheRecords(std::vector<CacheRecord>& cacheRecords) const;
33  size_t GetNumOfRecords() const;
34 
35  private:
36  typedef std::map<std::string, CacheRecord> TUrlToCacheRecordMap;
37  typedef std::pair<std::string, CacheRecord> TUrlCacheRecordPair;
38  TUrlToCacheRecordMap m_cacheRecordsByUrl;
39 
40  size_t GetSizeOnDisk() const;
41  };
42  }
43  }
44 }
45