Move @cached decorator out into synapse.storage._base; add minimal docs

This commit is contained in:
Paul "LeoNerd" Evans 2015-02-19 17:29:39 +00:00
parent 61959928bb
commit 077d200342
2 changed files with 36 additions and 27 deletions

View file

@ -17,7 +17,7 @@ from twisted.internet import defer
from collections import namedtuple
from ._base import SQLBaseStore
from ._base import SQLBaseStore, cached
from synapse.api.constants import Membership
from synapse.types import UserID
@ -33,32 +33,6 @@ RoomsForUser = namedtuple(
)
# TODO(paul):
# * Move this somewhere higher-level, shared;
# * more generic key management
# * export monitoring stats
# * maximum size; just evict things at random, or consider LRU?
def cached(orig):
cache = {}
@defer.inlineCallbacks
def wrapped(self, key):
if key in cache:
defer.returnValue(cache[key])
ret = yield orig(self, key)
cache[key] = ret;
defer.returnValue(ret)
def invalidate(key):
if key in cache:
del cache[key]
wrapped.invalidate = invalidate
return wrapped
class RoomMemberStore(SQLBaseStore):
def __init__(self, *args, **kw):