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

Unified Diff: chrome/common/extensions/docs/server2/caching_file_system.py

Issue 13470005: Refactor the devserver to make it easier to control caching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cduvall, rebase Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/caching_file_system.py
diff --git a/chrome/common/extensions/docs/server2/memcache_file_system.py b/chrome/common/extensions/docs/server2/caching_file_system.py
similarity index 75%
rename from chrome/common/extensions/docs/server2/memcache_file_system.py
rename to chrome/common/extensions/docs/server2/caching_file_system.py
index ae281dc58f65c85c06dd6f377cdaa468379ffc7e..592c23ade5149eee966b65ddebe9006205c63ef2 100644
--- a/chrome/common/extensions/docs/server2/memcache_file_system.py
+++ b/chrome/common/extensions/docs/server2/caching_file_system.py
@@ -4,20 +4,18 @@
from file_system import FileSystem, StatInfo, FileNotFoundError
from future import Future
-import object_store
+from object_store_creator import ObjectStoreCreator
class _AsyncUncachedFuture(object):
def __init__(self,
uncached,
current_result,
file_system,
- object_store,
- namespace):
+ object_store):
self._uncached = uncached
self._current_result = current_result
self._file_system = file_system
self._object_store = object_store
- self._namespace = namespace
def Get(self):
mapping = {}
@@ -26,22 +24,28 @@ class _AsyncUncachedFuture(object):
version = self._file_system.Stat(item).version
mapping[item] = (new_items[item], version)
self._current_result[item] = new_items[item]
- self._object_store.SetMulti(mapping, self._namespace, time=0)
+ self._object_store.SetMulti(mapping, time=0)
return self._current_result
-class MemcacheFileSystem(FileSystem):
- """FileSystem implementation which memcaches the results of Read.
+class CachingFileSystem(FileSystem):
+ """FileSystem implementation which caches its results in an object store.
"""
- def __init__(self, file_system, object_store):
+ def __init__(self, file_system):
self._file_system = file_system
- self._object_store = object_store
+ object_store_creator = ObjectStoreCreator(CachingFileSystem)
+ self._stat_object_store = object_store_creator.Create(
+ category='stat')
+ self._read_object_store = object_store_creator.Create(
+ category='read')
+ self._read_binary_object_store = object_store_creator.Create(
+ category='read-binary')
def Stat(self, path, stats=None):
"""Stats the directory given, or if a file is given, stats the files parent
directory to get info about the file.
"""
# TODO(kalman): store the whole stat info, not just the version.
- version = self._object_store.Get(path, object_store.FILE_SYSTEM_STAT).Get()
+ version = self._stat_object_store.Get(path).Get()
if version is not None:
return StatInfo(version)
@@ -64,7 +68,7 @@ class MemcacheFileSystem(FileSystem):
for child_path, child_version in dir_stat.child_versions.iteritems():
child_path = dir_path + child_path
mapping[child_path] = child_version
- self._object_store.SetMulti(mapping, object_store.FILE_SYSTEM_STAT)
+ self._stat_object_store.SetMulti(mapping)
return StatInfo(version)
def Read(self, paths, binary=False):
@@ -73,13 +77,11 @@ class MemcacheFileSystem(FileSystem):
"""
result = {}
uncached = []
- namespace = object_store.FILE_SYSTEM_READ
- if binary:
- namespace = '%s.binary' % namespace
- results = self._object_store.GetMulti(paths, namespace, time=0).Get()
+ read_object_store = (self._read_binary_object_store if binary else
+ self._read_object_store)
+ results = read_object_store.GetMulti(paths).Get()
result_values = [x[1] for x in sorted(results.iteritems())]
- stats = self._object_store.GetMulti(paths,
- object_store.FILE_SYSTEM_STAT).Get()
+ stats = self._stat_object_store.GetMulti(paths).Get()
stat_values = [x[1] for x in sorted(stats.iteritems())]
for path, cached_result, stat in zip(sorted(paths),
result_values,
@@ -102,5 +104,4 @@ class MemcacheFileSystem(FileSystem):
self._file_system.Read(uncached, binary=binary),
result,
self,
- self._object_store,
- namespace))
+ read_object_store))

Powered by Google App Engine
This is Rietveld 408576698