From: Ed Page Date: Tue, 23 Feb 2010 00:46:15 +0000 (-0600) Subject: Adding support for caching of avatars X-Git-Url: http://git.maemo.org/git/?p=theonering;a=commitdiff_plain;h=543ed1ad299675d5ead6edbd3f1cac6cba1f4015 Adding support for caching of avatars --- diff --git a/src/avatars.py b/src/avatars.py index f4ce3f4..aef73f5 100644 --- a/src/avatars.py +++ b/src/avatars.py @@ -26,6 +26,7 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): def __init__(self): tp.server.ConnectionInterfaceAvatars.__init__(self) + self._avatarCache = {} self._implement_property_get( telepathy.interfaces.CONNECTION_INTERFACE_AVATARS, @@ -78,14 +79,14 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): @misc_utils.log_exception(_moduleLogger) def RequestAvatar(self, contact): imageName = self._select_avatar(contact) - image = self._load_avatar(imageName) + image = self._get_avatar(imageName) return image, "image/png" @misc_utils.log_exception(_moduleLogger) def RequestAvatars(self, contacts): for handleid in contacts: imageName = self._select_avatar(handleid) - image = self._load_avatar(imageName) + image = self._get_avatar(imageName) self.AvatarRetrieved(handleid, imageName, image, "image/png") @misc_utils.log_exception(_moduleLogger) @@ -115,7 +116,16 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): return imageName + def _get_avatar(self, imageName): + try: + return self._avatarCache[imageName] + except AttributeError: + image = self._load_avatar(imageName) + self._avatarCache[imageName] = image + return image + def _load_avatar(self, imageName): + _moduleLogger.debug("Loading avatar %r from file" % (imageName, )) try: with open(os.sep.join([self.__LOOKUP_PATHS[0], imageName+".png"]), "rb") as f: return f.read()