diff options
author | Paul "LeoNerd" Evans <paul@matrix.org> | 2015-02-19 17:29:39 +0000 |
---|---|---|
committer | Paul "LeoNerd" Evans <paul@matrix.org> | 2015-02-19 17:29:39 +0000 |
commit | 077d20034278ea57c57d501de11bfb1f0c7f9603 (patch) | |
tree | 3af364a930c06ba8cb3c1bdaa825d762ac2ae2b2 /synapse/storage/roommember.py | |
parent | Pull out the 'get_rooms_for_user' cache logic into a reĆ¼sable @cached decorator (diff) | |
download | synapse-077d20034278ea57c57d501de11bfb1f0c7f9603.tar.xz |
Move @cached decorator out into synapse.storage._base; add minimal docs
Diffstat (limited to 'synapse/storage/roommember.py')
-rw-r--r-- | synapse/storage/roommember.py | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py index 569bd55d0f..b8fcc1927e 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py @@ -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): |