Mercurial > libervia-backend
comparison 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 |
comparison
equal
deleted
inserted
replaced
1295:1e3b1f9ad6e2 | 1367:f71a0fc26886 |
---|---|
100 client = self.host.getClient(profile_key) | 100 client = self.host.getClient(profile_key) |
101 if jid_ is None: | 101 if jid_ is None: |
102 jid_ = jid.JID(client.jid.host) | 102 jid_ = jid.JID(client.jid.host) |
103 try: | 103 try: |
104 cap_hash = self.host.memory.getEntityData(jid_, [C.ENTITY_CAP_HASH], client.profile)[C.ENTITY_CAP_HASH] | 104 cap_hash = self.host.memory.getEntityData(jid_, [C.ENTITY_CAP_HASH], client.profile)[C.ENTITY_CAP_HASH] |
105 disco_infos = self.hashes[cap_hash] | 105 except (KeyError, exceptions.UnknownEntityError): |
106 return defer.succeed(disco_infos) | |
107 except KeyError: | |
108 # capability hash is not available, we'll compute one | 106 # capability hash is not available, we'll compute one |
109 def infosCb(disco_infos): | 107 def infosCb(disco_infos): |
110 cap_hash = self.generateHash(disco_infos) | 108 cap_hash = self.generateHash(disco_infos) |
111 self.hashes[cap_hash] = disco_infos | 109 self.hashes[cap_hash] = disco_infos |
112 self.host.memory.updateEntityData(jid_, C.ENTITY_CAP_HASH, cap_hash, client.profile) | 110 self.host.memory.updateEntityData(jid_, C.ENTITY_CAP_HASH, cap_hash, profile_key=client.profile) |
113 return disco_infos | 111 return disco_infos |
114 d = client.disco.requestInfo(jid_) | 112 d = client.disco.requestInfo(jid_) |
115 d.addCallback(infosCb) | 113 d.addCallback(infosCb) |
116 return d | 114 return d |
115 else: | |
116 disco_infos = self.hashes[cap_hash] | |
117 return defer.succeed(disco_infos) | |
117 | 118 |
118 @defer.inlineCallbacks | 119 @defer.inlineCallbacks |
119 def getItems(self, jid_=None, nodeIdentifier='', profile_key=C.PROF_KEY_NONE): | 120 def getItems(self, jid_=None, nodeIdentifier='', profile_key=C.PROF_KEY_NONE): |
120 """get disco items from jid_, cache them for our own server | 121 """get disco items from jid_, cache them for our own server |
121 | 122 |
129 jid_ = jid.JID(client.jid.host) | 130 jid_ = jid.JID(client.jid.host) |
130 # we cache items only for our own server | 131 # we cache items only for our own server |
131 try: | 132 try: |
132 items = self.host.memory.getEntityData(jid_, ["DISCO_ITEMS"], client.profile)["DISCO_ITEMS"] | 133 items = self.host.memory.getEntityData(jid_, ["DISCO_ITEMS"], client.profile)["DISCO_ITEMS"] |
133 log.debug("[%s] disco items are in cache" % jid_.full()) | 134 log.debug("[%s] disco items are in cache" % jid_.full()) |
134 except KeyError: | 135 except (KeyError, exceptions.UnknownEntityError): |
135 log.debug("Caching [%s] disco items" % jid_.full()) | 136 log.debug("Caching [%s] disco items" % jid_.full()) |
136 items = yield client.disco.requestItems(jid_, nodeIdentifier) | 137 items = yield client.disco.requestItems(jid_, nodeIdentifier) |
137 self.host.memory.updateEntityData(jid_, "DISCO_ITEMS", items, client.profile) | 138 self.host.memory.updateEntityData(jid_, "DISCO_ITEMS", items, profile_key=client.profile) |
138 else: | 139 else: |
139 items = yield client.disco.requestItems(jid_, nodeIdentifier) | 140 items = yield client.disco.requestItems(jid_, nodeIdentifier) |
140 | 141 |
141 defer.returnValue(items) | 142 defer.returnValue(items) |
142 | 143 |