memoize call to get_key
authorKali Kaneko <kali@leap.se>
Tue, 17 Dec 2013 04:45:05 +0000 (00:45 -0400)
committerKali Kaneko <kali@leap.se>
Tue, 17 Dec 2013 04:45:05 +0000 (00:45 -0400)
changes/VERSION_COMPAT
changes/feature_4784-memoize-get-key [new file with mode: 0644]
src/leap/keymanager/__init__.py

index e69de29..dfe67ab 100644 (file)
@@ -0,0 +1 @@
+leap.common >= 0.3.7  # memoize
diff --git a/changes/feature_4784-memoize-get-key b/changes/feature_4784-memoize-get-key
new file mode 100644 (file)
index 0000000..5284827
--- /dev/null
@@ -0,0 +1 @@
+  o Memoize call to get_key. Closes: #4784
index 6cfbf71..5b1d8d9 100644 (file)
@@ -46,6 +46,7 @@ import requests
 from leap.common.check import leap_assert, leap_assert_type
 from leap.common.events import signal
 from leap.common.events import events_pb2 as proto
 from leap.common.check import leap_assert, leap_assert_type
 from leap.common.events import signal
 from leap.common.events import events_pb2 as proto
+from leap.common.decorators import memoized_method
 
 from leap.keymanager.errors import KeyNotFound
 
 
 from leap.keymanager.errors import KeyNotFound
 
@@ -250,6 +251,7 @@ class KeyManager(object):
         self._put(uri, data)
         signal(proto.KEYMANAGER_DONE_UPLOADING_KEYS, self._address)
 
         self._put(uri, data)
         signal(proto.KEYMANAGER_DONE_UPLOADING_KEYS, self._address)
 
+    @memoized_method
     def get_key(self, address, ktype, private=False, fetch_remote=True):
         """
         Return a key of type C{ktype} bound to C{address}.
     def get_key(self, address, ktype, private=False, fetch_remote=True):
         """
         Return a key of type C{ktype} bound to C{address}.
@@ -266,9 +268,10 @@ class KeyManager(object):
 
         :return: A key of type C{ktype} bound to C{address}.
         :rtype: EncryptionKey
 
         :return: A key of type C{ktype} bound to C{address}.
         :rtype: EncryptionKey
-        @raise KeyNotFound: If the key was not found both locally and in
-            keyserver.
+        :raise KeyNotFound: If the key was not found both locally and in
+                            keyserver.
         """
         """
+        logger.debug("getting key for %s" % (address,))
         leap_assert(
             ktype in self._wrapper_map,
             'Unkown key type: %s.' % str(ktype))
         leap_assert(
             ktype in self._wrapper_map,
             'Unkown key type: %s.' % str(ktype))