Mercurial > libervia-backend
diff src/memory/disco.py @ 1367:f71a0fc26886
merged branch frontends_multi_profiles
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 18 Mar 2015 10:52:28 +0100 |
parents | be3a301540c0 |
children | 069ad98b360d |
line wrap: on
line diff
--- a/src/memory/disco.py Thu Feb 05 11:59:26 2015 +0100 +++ b/src/memory/disco.py Wed Mar 18 10:52:28 2015 +0100 @@ -102,18 +102,19 @@ jid_ = jid.JID(client.jid.host) try: cap_hash = self.host.memory.getEntityData(jid_, [C.ENTITY_CAP_HASH], client.profile)[C.ENTITY_CAP_HASH] - disco_infos = self.hashes[cap_hash] - return defer.succeed(disco_infos) - except KeyError: + except (KeyError, exceptions.UnknownEntityError): # capability hash is not available, we'll compute one def infosCb(disco_infos): cap_hash = self.generateHash(disco_infos) self.hashes[cap_hash] = disco_infos - self.host.memory.updateEntityData(jid_, C.ENTITY_CAP_HASH, cap_hash, client.profile) + self.host.memory.updateEntityData(jid_, C.ENTITY_CAP_HASH, cap_hash, profile_key=client.profile) return disco_infos d = client.disco.requestInfo(jid_) d.addCallback(infosCb) return d + else: + disco_infos = self.hashes[cap_hash] + return defer.succeed(disco_infos) @defer.inlineCallbacks def getItems(self, jid_=None, nodeIdentifier='', profile_key=C.PROF_KEY_NONE): @@ -131,10 +132,10 @@ try: items = self.host.memory.getEntityData(jid_, ["DISCO_ITEMS"], client.profile)["DISCO_ITEMS"] log.debug("[%s] disco items are in cache" % jid_.full()) - except KeyError: + except (KeyError, exceptions.UnknownEntityError): log.debug("Caching [%s] disco items" % jid_.full()) items = yield client.disco.requestItems(jid_, nodeIdentifier) - self.host.memory.updateEntityData(jid_, "DISCO_ITEMS", items, client.profile) + self.host.memory.updateEntityData(jid_, "DISCO_ITEMS", items, profile_key=client.profile) else: items = yield client.disco.requestItems(jid_, nodeIdentifier)