Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / object_store.py
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
3 # found in the LICENSE file.
4
5 from future import Future
6
7
8 class ObjectStore(object):
9   '''A class for caching picklable objects.
10   '''
11   def Get(self, key):
12     '''Gets a |Future| with the value of |key| in the object store, or None
13     if |key| is not in the object store.
14     '''
15     return self.GetMulti((key,)).Then(lambda keys: keys.get(key))
16
17   def GetMulti(self, keys):
18     '''Gets a |Future| with values mapped to |keys| from the object store, with
19     any keys not in the object store omitted.
20     '''
21     raise NotImplementedError(self.__class__)
22
23   def Set(self, key, value):
24     '''Sets key -> value in the object store.
25     '''
26     self.SetMulti({ key: value })
27
28   def SetMulti(self, items):
29     '''Atomically sets the mapping of keys to values in the object store.
30     '''
31     raise NotImplementedError(self.__class__)
32
33   def Del(self, key):
34     '''Deletes a key from the object store.
35     '''
36     self.DelMulti([key])
37
38   def DelMulti(self, keys):
39     '''Deletes |keys| from the object store.
40     '''
41     raise NotImplementedError(self.__class__)