diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-03-13 15:55:37 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-03-13 17:21:19 +0000 |
commit | fdcad8eabdf20718d053255555fb27ac190613c4 (patch) | |
tree | f4bcd043bcfaf2dac0b2f578f5920f84ce84dcd7 /synapse/handlers/receipts.py | |
parent | declare a ReadReceipt class (diff) | |
download | synapse-fdcad8eabdf20718d053255555fb27ac190613c4.tar.xz |
Move client receipt processing to federation sender worker.
This is mostly a prerequisite for #4730, but also fits with the general theme of "move everything off the master that we possibly can".
Diffstat (limited to '')
-rw-r--r-- | synapse/handlers/receipts.py | 37 |
1 files changed, 4 insertions, 33 deletions
diff --git a/synapse/handlers/receipts.py b/synapse/handlers/receipts.py index 733e7c3752..dd783ae134 100644 --- a/synapse/handlers/receipts.py +++ b/synapse/handlers/receipts.py @@ -16,9 +16,8 @@ import logging from twisted.internet import defer -from synapse.types import ReadReceipt, get_domain_from_id - -from ._base import BaseHandler +from synapse.handlers._base import BaseHandler +from synapse.types import ReadReceipt logger = logging.getLogger(__name__) @@ -87,7 +86,7 @@ class ReceiptsHandler(BaseHandler): # no new receipts defer.returnValue(False) - affected_room_ids = list(set([r["room_id"] for r in receipts])) + affected_room_ids = list(set([r.room_id for r in receipts])) self.notifier.on_new_event( "receipt_key", max_batch_id, rooms=affected_room_ids @@ -119,35 +118,7 @@ class ReceiptsHandler(BaseHandler): if not is_new: return - # Work out which remote servers should be poked and poke them. - - # TODO: optimise this to move some of the work to the workers. - data = receipt.data - - # XXX why does this not use state.get_current_hosts_in_room() ? - users = yield self.state.get_current_user_in_room(room_id) - remotedomains = set(get_domain_from_id(u) for u in users) - remotedomains = remotedomains.copy() - remotedomains.discard(self.server_name) - - logger.debug("Sending receipt to: %r", remotedomains) - - for domain in remotedomains: - self.federation.build_and_send_edu( - destination=domain, - edu_type="m.receipt", - content={ - room_id: { - receipt_type: { - user_id: { - "event_ids": [event_id], - "data": data, - } - } - }, - }, - key=(room_id, receipt_type, user_id), - ) + self.federation.send_read_receipt(receipt) @defer.inlineCallbacks def get_receipts_for_room(self, room_id, to_key): |