summaryrefslogtreecommitdiff
path: root/server/src/leap/soledad/server/caching.py
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-08-30 05:17:20 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-09-24 19:32:20 -0300
commita10ae06bb33c6caaaf3a8474cc6d7b01c33abc9f (patch)
tree367f4bf69554baa714a15177af81f5f3700472bc /server/src/leap/soledad/server/caching.py
parent0192f5923932ce738656c5b9ec25167a1b74386a (diff)
[feat] first draft of sync_state in memory
This commit changes sync_state to be in memory, with all tests passing. The memory variable for now is a dict with each key composed by source_replica_uid and sync_id, replicating CouchDB implementation. Next steps includes migrating this to Beaker and refactor/clean up code. Changed the module's INFO dict to use Beaker's caching and adapted methods to get and save from it. Still needs refactoring, all tests passes. Beaker is now using memory as default; It is configurable, but we aren't opening the possibility of config now for security. We need to check what can be misconfigured first. We are not sure if beaker will be the definitive solution for server side caching. This change isolates it with more granularity. In order to replace it, just change get_cache_for to return the proper caching object using another implementation. This caching object is supposed to behave as a dict.
Diffstat (limited to 'server/src/leap/soledad/server/caching.py')
-rw-r--r--server/src/leap/soledad/server/caching.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/server/src/leap/soledad/server/caching.py b/server/src/leap/soledad/server/caching.py
new file mode 100644
index 00000000..cd5d8dd4
--- /dev/null
+++ b/server/src/leap/soledad/server/caching.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+# caching.py
+# Copyright (C) 2015 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+Server side caching. Using beaker for now.
+"""
+from beaker.cache import CacheManager
+
+
+def setup_caching():
+ _cache_manager = CacheManager(type='memory')
+ return _cache_manager
+
+
+_cache_manager = setup_caching()
+
+
+def get_cache_for(key):
+ return _cache_manager.get_cache(key)