Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: chrome/browser/policy/cloud/resource_cache.h

Issue 109743002: Move policy code into components/policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar fixes Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_POLICY_CLOUD_RESOURCE_CACHE_H_
6 #define CHROME_BROWSER_POLICY_CLOUD_RESOURCE_CACHE_H_
7
8 #include <map>
9 #include <set>
10 #include <string>
11
12 #include "base/basictypes.h"
13 #include "base/callback_forward.h"
14 #include "base/files/file_path.h"
15 #include "base/memory/ref_counted.h"
16
17 namespace base {
18 class SequencedTaskRunner;
19 }
20
21 namespace policy {
22
23 // Manages storage of data at a given path. The data is keyed by a key and
24 // a subkey, and can be queried by (key, subkey) or (key) lookups.
25 // The contents of the cache have to be manually cleared using Delete() or
26 // Purge*().
27 // The class can be instantiated on any thread but from then on, it must be
28 // accessed via the |task_runner| only. The |task_runner| must support file I/O.
29 class ResourceCache {
30 public:
31 explicit ResourceCache(const base::FilePath& cache_path,
32 scoped_refptr<base::SequencedTaskRunner> task_runner);
33 virtual ~ResourceCache();
34
35 // Stores |data| under (key, subkey). Returns true if the store suceeded, and
36 // false otherwise.
37 bool Store(const std::string& key,
38 const std::string& subkey,
39 const std::string& data);
40
41 // Loads the contents of (key, subkey) into |data| and returns true. Returns
42 // false if (key, subkey) isn't found or if there is a problem reading the
43 // data.
44 bool Load(const std::string& key,
45 const std::string& subkey,
46 std::string* data);
47
48 // Loads all the subkeys of |key| into |contents|.
49 void LoadAllSubkeys(const std::string& key,
50 std::map<std::string, std::string>* contents);
51
52 // Deletes (key, subkey).
53 void Delete(const std::string& key, const std::string& subkey);
54
55 // Deletes all the subkeys of |key|.
56 void Clear(const std::string& key);
57
58 // Deletes the subkeys of |key| for which the |filter| returns true.
59 typedef base::Callback<bool(const std::string&)> SubkeyFilter;
60 void FilterSubkeys(const std::string& key, const SubkeyFilter& filter);
61
62 // Deletes all keys not in |keys_to_keep|, along with their subkeys.
63 void PurgeOtherKeys(const std::set<std::string>& keys_to_keep);
64
65 // Deletes all the subkeys of |key| not in |subkeys_to_keep|.
66 void PurgeOtherSubkeys(const std::string& key,
67 const std::set<std::string>& subkeys_to_keep);
68
69 private:
70 // Points |path| at the cache directory for |key| and returns whether the
71 // directory exists. If |allow_create| is |true|, the directory is created if
72 // it did not exist yet.
73 bool VerifyKeyPath(const std::string& key,
74 bool allow_create,
75 base::FilePath* path);
76
77 // Points |path| at the file in which data for (key, subkey) should be stored
78 // and returns whether the parent directory of this file exists. If
79 // |allow_create_key| is |true|, the directory is created if it did not exist
80 // yet. This method does not check whether the file at |path| exists or not.
81 bool VerifyKeyPathAndGetSubkeyPath(const std::string& key,
82 bool allow_create_key,
83 const std::string& subkey,
84 base::FilePath* subkey_path);
85
86 base::FilePath cache_dir_;
87
88 // Task runner that |this| runs on.
89 scoped_refptr<base::SequencedTaskRunner> task_runner_;
90
91 DISALLOW_COPY_AND_ASSIGN(ResourceCache);
92 };
93
94 } // namespace policy
95
96 #endif // CHROME_BROWSER_POLICY_CLOUD_RESOURCE_CACHE_H_
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud/rate_limiter_unittest.cc ('k') | chrome/browser/policy/cloud/resource_cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698