OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 import sys | 5 import sys |
6 | 6 |
7 import schema_util | 7 import schema_util |
8 from docs_server_utils import ToUnicode | 8 from docs_server_utils import ToUnicode |
9 from file_system import FileNotFoundError | 9 from file_system import FileNotFoundError |
10 from future import Future | 10 from future import Future |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 cache_entry = self._list_object_store.Get(path).Get() | 225 cache_entry = self._list_object_store.Get(path).Get() |
226 if (cache_entry is not None) and (version == cache_entry.version): | 226 if (cache_entry is not None) and (version == cache_entry.version): |
227 return Future(value=cache_entry._cache_data) | 227 return Future(value=cache_entry._cache_data) |
228 | 228 |
229 def next(files): | 229 def next(files): |
230 cache_data = self._compilation_function(path, files) | 230 cache_data = self._compilation_function(path, files) |
231 self._list_object_store.Set(path, _CacheEntry(cache_data, version)) | 231 self._list_object_store.Set(path, _CacheEntry(cache_data, version)) |
232 return cache_data | 232 return cache_data |
233 return self._RecursiveList(path).Then(next) | 233 return self._RecursiveList(path).Then(next) |
234 | 234 |
235 def GetFileVersion(self, path): | 235 # _GetFileVersionFromCache and _GetFileListingVersionFromCache are exposed |
| 236 # *only* so that ChainedCompiledFileSystem can optimise its caches. *Do not* |
| 237 # use these methods otherwise, they don't do what you want. Use |
| 238 # FileSystem.Stat on the FileSystem that this CompiledFileSystem uses. |
| 239 |
| 240 def _GetFileVersionFromCache(self, path): |
236 cache_entry = self._file_object_store.Get(path).Get() | 241 cache_entry = self._file_object_store.Get(path).Get() |
237 if cache_entry is not None: | 242 if cache_entry is not None: |
238 return cache_entry.version | 243 return Future(value=cache_entry.version) |
239 return self._file_system.Stat(path).version | 244 stat_future = self._file_system.StatAsync(path) |
| 245 return Future(callback=lambda: stat_future.Get().version) |
240 | 246 |
241 def GetFileListingVersion(self, path): | 247 def _GetFileListingVersionFromCache(self, path): |
242 path = ToDirectory(path) | 248 path = ToDirectory(path) |
243 cache_entry = self._list_object_store.Get(path).Get() | 249 cache_entry = self._list_object_store.Get(path).Get() |
244 if cache_entry is not None: | 250 if cache_entry is not None: |
245 return cache_entry.version | 251 return Future(value=cache_entry.version) |
246 return self._file_system.Stat(path).version | 252 stat_future = self._file_system.StatAsync(path) |
247 | 253 return Future(callback=lambda: stat_future.Get().version) |
248 def FileExists(self, path): | |
249 return self._file_system.Exists(path) | |
250 | 254 |
251 def GetIdentity(self): | 255 def GetIdentity(self): |
252 return self._file_system.GetIdentity() | 256 return self._file_system.GetIdentity() |
OLD | NEW |