diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2019-07-30 02:47:27 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-30 02:47:27 +1000 |
commit | 865077f1d1f4866ab874c56b70abbd426fedfb97 (patch) | |
tree | c99263c240db2b00d304ef60fb5272774aa9b15a /synapse/handlers/federation.py | |
parent | Merge pull request #5774 from matrix-org/erikj/fix_rejected_membership (diff) | |
download | synapse-865077f1d1f4866ab874c56b70abbd426fedfb97.tar.xz |
Room Complexity Client Implementation (#5783)
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 89b37dbc1c..10160bfe86 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -2796,3 +2796,28 @@ class FederationHandler(BaseHandler): ) else: return user_joined_room(self.distributor, user, room_id) + + @defer.inlineCallbacks + def get_room_complexity(self, remote_room_hosts, room_id): + """ + Fetch the complexity of a remote room over federation. + + Args: + remote_room_hosts (list[str]): The remote servers to ask. + room_id (str): The room ID to ask about. + + Returns: + Deferred[dict] or Deferred[None]: Dict contains the complexity + metric versions, while None means we could not fetch the complexity. + """ + + for host in remote_room_hosts: + res = yield self.federation_client.get_room_complexity(host, room_id) + + # We got a result, return it. + if res: + defer.returnValue(res) + + # We fell off the bottom, couldn't get the complexity from anyone. Oh + # well. + defer.returnValue(None) |