| Index: chrome/common/extensions/docs/server2/persistent_object_store_fake.py
|
| diff --git a/chrome/common/extensions/docs/server2/persistent_object_store_fake.py b/chrome/common/extensions/docs/server2/persistent_object_store_fake.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6d244bad31d936ee970842760d47bb4924034fd8
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/server2/persistent_object_store_fake.py
|
| @@ -0,0 +1,48 @@
|
| +# Copyright 2015 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import cPickle
|
| +import logging
|
| +
|
| +from future import Future
|
| +from object_store import ObjectStore
|
| +
|
| +
|
| +class PersistentObjectStoreFake(ObjectStore):
|
| + '''Stores or retrieves data in memory. Not really persistent.
|
| + '''
|
| + # Static storage shared across all fake object stores.
|
| + DATA = {}
|
| +
|
| + def __init__(self, namespace):
|
| + if namespace not in PersistentObjectStoreFake.DATA:
|
| + PersistentObjectStoreFake.DATA[namespace] = {}
|
| + self._data = PersistentObjectStoreFake.DATA[namespace]
|
| +
|
| + def SetMulti(self, mapping):
|
| + self._data.update(mapping)
|
| + return Future(value=True)
|
| +
|
| + def GetMulti(self, keys):
|
| + result = dict((key, self._data[key]) for key in keys if key in self._data)
|
| + return Future(value=result)
|
| +
|
| + def DelMulti(self, keys):
|
| + for key in keys:
|
| + del self._data[key]
|
| +
|
| + @classmethod
|
| + def LoadFromFile(cls, filename):
|
| + with open(filename, 'r') as f:
|
| + cls.DATA = cPickle.load(f)
|
| + for k, v in cls.DATA.iteritems():
|
| + cls.DATA[k] = cPickle.loads(v)
|
| + logging.info('Loaded %s keys from %s.' % (len(cls.DATA), filename))
|
| +
|
| + @classmethod
|
| + def SaveToFile(cls, filename):
|
| + data = dict((k, cPickle.dumps(v)) for k, v, in cls.DATA.iteritems())
|
| + with open(filename, 'w') as f:
|
| + cPickle.dump(data, f)
|
| + logging.info('Saved %s keys to %s.' % (len(cls.DATA), filename))
|
|
|