OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 from datetime import datetime, timedelta | 5 from datetime import datetime, timedelta |
6 from file_system import FileNotFoundError, ToUnicode | 6 from file_system import FileNotFoundError, ToUnicode |
7 from future import Future | 7 from future import Future |
8 from patcher import Patcher | 8 from patcher import Patcher |
9 | 9 |
10 _VERSION_CACHE_MAXAGE = timedelta(seconds=5) | 10 _VERSION_CACHE_MAXAGE = timedelta(seconds=5) |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 ''' CachingRietveldPatcher implements a caching layer on top of |patcher|. | 60 ''' CachingRietveldPatcher implements a caching layer on top of |patcher|. |
61 In theory, it can be used with any class that implements Patcher. But this | 61 In theory, it can be used with any class that implements Patcher. But this |
62 class assumes that applying to all patched files at once is more efficient | 62 class assumes that applying to all patched files at once is more efficient |
63 than applying to individual files. | 63 than applying to individual files. |
64 ''' | 64 ''' |
65 def __init__(self, | 65 def __init__(self, |
66 rietveld_patcher, | 66 rietveld_patcher, |
67 object_store_creator, | 67 object_store_creator, |
68 test_datetime=datetime): | 68 test_datetime=datetime): |
69 self._patcher = rietveld_patcher | 69 self._patcher = rietveld_patcher |
70 self._version_object_store = object_store_creator.Create( | 70 def create_object_store(category): |
71 CachingRietveldPatcher, category='version') | 71 return object_store_creator.Create( |
72 self._list_object_store = object_store_creator.Create( | 72 CachingRietveldPatcher, |
73 CachingRietveldPatcher, category='list') | 73 category='%s/%s' % (rietveld_patcher.GetIdentity(), category)) |
74 self._file_object_store = object_store_creator.Create( | 74 self._version_object_store = create_object_store('version') |
75 CachingRietveldPatcher, category='file') | 75 self._list_object_store = create_object_store('list') |
| 76 self._file_object_store = create_object_store('file') |
76 self._datetime = test_datetime | 77 self._datetime = test_datetime |
77 | 78 |
78 def GetVersion(self): | 79 def GetVersion(self): |
79 key = 'version' | 80 key = 'version' |
80 value = self._version_object_store.Get(key).Get() | 81 value = self._version_object_store.Get(key).Get() |
81 if value is not None: | 82 if value is not None: |
82 version, time = value | 83 version, time = value |
83 if self._datetime.now() - time < _VERSION_CACHE_MAXAGE: | 84 if self._datetime.now() - time < _VERSION_CACHE_MAXAGE: |
84 return version | 85 return version |
85 | 86 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 return _AsyncUncachedFuture(version, | 118 return _AsyncUncachedFuture(version, |
118 paths, | 119 paths, |
119 binary, | 120 binary, |
120 cached_value, | 121 cached_value, |
121 missing_paths, | 122 missing_paths, |
122 self._patcher.Apply(set(added) | set(modified), | 123 self._patcher.Apply(set(added) | set(modified), |
123 None, | 124 None, |
124 True, | 125 True, |
125 version), | 126 version), |
126 self._file_object_store) | 127 self._file_object_store) |
| 128 |
| 129 def GetIdentity(self): |
| 130 return self._patcher.GetIdentity() |
OLD | NEW |