diff options
author | Mark Haines <mjark@negativecurvature.net> | 2015-05-22 17:02:23 +0100 |
---|---|---|
committer | Mark Haines <mjark@negativecurvature.net> | 2015-05-22 17:02:23 +0100 |
commit | d9f60e8dc8d575e5bdd9f10da760e5cb0cdf57af (patch) | |
tree | 62b5d56292f776b4ce69fb652673260d9793d91b /synapse/handlers/presence.py | |
parent | Merge pull request #164 from matrix-org/markjh/pusher_performance_2 (diff) | |
parent | Fix the presence tests (diff) | |
download | synapse-d9f60e8dc8d575e5bdd9f10da760e5cb0cdf57af.tar.xz |
Merge pull request #163 from matrix-org/markjh/presence_list_cache
Add a cache for the presence list
Diffstat (limited to 'synapse/handlers/presence.py')
-rw-r--r-- | synapse/handlers/presence.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index 670c1d353f..023ad33ab0 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -521,20 +521,26 @@ class PresenceHandler(BaseHandler): if not self.hs.is_mine(observer_user): raise SynapseError(400, "User is not hosted on this Home Server") - presence = yield self.store.get_presence_list( + presence_list = yield self.store.get_presence_list( observer_user.localpart, accepted=accepted ) - for p in presence: - observed_user = UserID.from_string(p.pop("observed_user_id")) - p["observed_user"] = observed_user - p.update(self._get_or_offline_usercache(observed_user).get_state()) - if "last_active" in p: - p["last_active_ago"] = int( - self.clock.time_msec() - p.pop("last_active") + results = [] + for row in presence_list: + observed_user = UserID.from_string(row["observed_user_id"]) + result = { + "observed_user": observed_user, "accepted": row["accepted"] + } + result.update( + self._get_or_offline_usercache(observed_user).get_state() + ) + if "last_active" in result: + result["last_active_ago"] = int( + self.clock.time_msec() - result.pop("last_active") ) + results.append(result) - defer.returnValue(presence) + defer.returnValue(results) @defer.inlineCallbacks @log_function |