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

Side by Side Diff: goopdate/package_cache.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months 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
« no previous file with comments | « goopdate/package.cc ('k') | goopdate/package_cache.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2009-2010 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #ifndef OMAHA_GOOPDATE_PACKAGE_CACHE_H_
17 #define OMAHA_GOOPDATE_PACKAGE_CACHE_H_
18
19 #include <windows.h>
20 #include <atlstr.h>
21 #include <vector>
22 #include "base/basictypes.h"
23 #include "base/synchronized.h"
24
25 namespace omaha {
26
27 class PackageCache {
28 public:
29
30 // Defines the key that uniquely identifies the packages in the cache.
31 // The key uses a default version value in the case the application does
32 // not provide a version string.
33 class Key {
34 public:
35 Key(const CString& app_id,
36 const CString& version,
37 const CString& package_name)
38 : app_id_(app_id),
39 version_(version.IsEmpty() ? _T("0.0.0.0") : version),
40 package_name_(package_name) {}
41
42 CString app_id() const { return app_id_; }
43 CString version() const { return version_; }
44 CString package_name() const { return package_name_; }
45
46 CString ToString() const {
47 CString result;
48 result.Format(_T("appid=%s; version=%s; package_name=%s"),
49 app_id_, version_, package_name_);
50 return result;
51 }
52
53 private:
54 const CString app_id_;
55 const CString version_;
56 const CString package_name_;
57
58 DISALLOW_COPY_AND_ASSIGN(Key);
59 };
60
61 PackageCache();
62 ~PackageCache();
63
64 HRESULT Initialize(const CString& cache_root);
65
66 HRESULT Put(const Key& key,
67 const CString& source_file,
68 const CString& hash);
69
70 HRESULT Get(const Key& key,
71 const CString& destination_file,
72 const CString& hash) const;
73
74 bool IsCached(const Key& key, const CString& hash) const;
75
76 HRESULT Purge(const Key& key);
77
78 HRESULT PurgeVersion(const CString& app_id, const CString& version);
79
80 HRESULT PurgeApp(const CString& app_id);
81
82 // Purges version directories lower than a 'version' of the form 1.2.3.4. If
83 // the version format is not recognized, returns E_INVALIDARG.
84 HRESULT PurgeAppLowerVersions(const CString& app_id, const CString& version);
85
86 HRESULT PurgeAll();
87
88 // Purges expired packages and keeps total cache size below the limit by
89 // purging oldest ones.
90 HRESULT PurgeOldPackagesIfNecessary() const;
91
92 // Returns the total size of all files in the cache. Returns 0 if the size
93 // cannot be determined or the cache is empty.
94 uint64 Size() const;
95
96 CString cache_root() const;
97
98 static HRESULT AuthenticateFile(const CString& filename,
99 const CString& hash);
100
101 private:
102 friend class PackageCacheTest;
103
104 HRESULT BuildCacheFileNameForKey(const Key& key, CString* filename) const;
105 HRESULT BuildCacheFileName(const CString& app_id,
106 const CString& version,
107 const CString& package_name,
108 CString* filename) const;
109
110 // Deletes the cache entries that match the app_id, version, and package_name.
111 // If the parameters are empty, the function deletes the packages of versions
112 // of apps, respectively.
113 HRESULT Delete(const CString& app_id,
114 const CString& version,
115 const CString& package_name);
116
117 // Returns the cache expiration time. All files in the cache before that time
118 // are considered as expired and should be purged.
119 FILETIME GetCacheExpirationTime() const;
120
121 // The cache duration, specified as a count of days. (This is converted to
122 // an absolute time by GetCacheExpirationTime().)
123 int cache_time_limit_days_;
124
125 // The maximum allowed cache size, in bytes. If the cache grows over this
126 // size, files will be purged using a least-recently-added metric.
127 uint64 cache_size_limit_bytes_;
128
129 CString cache_root_;
130
131 LLock cache_lock_;
132
133 DISALLOW_COPY_AND_ASSIGN(PackageCache);
134 };
135
136 } // namespace omaha
137
138 #endif // OMAHA_GOOPDATE_PACKAGE_CACHE_H_
139
OLDNEW
« no previous file with comments | « goopdate/package.cc ('k') | goopdate/package_cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698