diff options
author | Andrew Morgan <andrew@amorgan.xyz> | 2021-10-20 17:42:00 +0100 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2021-10-20 17:58:51 +0100 |
commit | 0ce33e58fce24073334dd97d09576fcd59edce55 (patch) | |
tree | ae9efd7b545f970bf8562bdaa1411811506e5c13 | |
parent | Add comments to notify_interested_services_ephemeral (diff) | |
download | synapse-0ce33e58fce24073334dd97d09576fcd59edce55.tar.xz |
Add comments to _handle* methods and those methods they call
-rw-r--r-- | synapse/handlers/appservice.py | 46 | ||||
-rw-r--r-- | synapse/handlers/device.py | 4 | ||||
-rw-r--r-- | synapse/handlers/receipts.py | 8 | ||||
-rw-r--r-- | synapse/handlers/typing.py | 7 |
4 files changed, 62 insertions, 3 deletions
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py index c8be6f16e9..827884cbb0 100644 --- a/synapse/handlers/appservice.py +++ b/synapse/handlers/appservice.py @@ -273,18 +273,49 @@ class ApplicationServicesHandler: async def _handle_typing( self, service: ApplicationService, new_token: int ) -> List[JsonDict]: + """ + Given an application service, determine which events it should receive + from the given typing event stream token and now. + + Args: + service: The application service to check for which events it should receive. + new_token: The latest typing event stream token. + + Returns: + A list of JSON dictionaries containing data derived from the typing events that + should be sent to the given application service. + """ typing_source = self.event_sources.sources.typing # Get the typing events from just before current typing, _ = await typing_source.get_new_events_as( service=service, # For performance reasons, we don't persist the previous - # token in the DB and instead fetch the latest typing information + # token in the DB and instead fetch the latest typing event # for appservices. + # TODO: It'd probably be more efficient to simply fetch the + # typing event with the given 'new_token' stream token and + # checking if the given service was interested, rather than + # iterating over all typing events and only grabbing the + # latest one. from_key=new_token - 1, ) return typing async def _handle_receipts(self, service: ApplicationService) -> List[JsonDict]: + """ + Given an application service, determine which events it should receive + from those between the last-recorded typing event stream token for this + appservice and the latest one. + + Args: + service: The application service to check for which events it should receive. + new_token: A typing event stream token. Typing events between this token and + the current event stream token will be checked. + + Returns: + A list of JSON dictionaries containing data derived from the typing events that + should be sent to the given application service. + """ from_key = await self.store.get_type_stream_id_for_appservice( service, "read_receipt" ) @@ -297,6 +328,19 @@ class ApplicationServicesHandler: async def _handle_presence( self, service: ApplicationService, users: Collection[Union[str, UserID]] ) -> List[JsonDict]: + """ + Given an application service and a list of users who should be receiving + presence updates, return a list of presence updates destined for the + application service. + + Args: + service: The application service that ephemeral events are being sent to. + users: The users that should receive the presence update. + + Returns: + A list of json dictionaries containing data derived from the presence events + that should be sent to the given application service. + """ events: List[JsonDict] = [] presence_source = self.event_sources.sources.presence from_key = await self.store.get_type_stream_id_for_appservice( diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py index 6eafbea25d..68b446eb66 100644 --- a/synapse/handlers/device.py +++ b/synapse/handlers/device.py @@ -454,6 +454,10 @@ class DeviceHandler(DeviceWorkerHandler): ) -> None: """Notify that a user's device(s) has changed. Pokes the notifier, and remote servers if the user is local. + + Args: + user_id: The Matrix ID of the user who's device list has been updated. + device_ids: The device IDs that have changed. """ if not device_ids: # No changes to notify about, so this is a no-op. diff --git a/synapse/handlers/receipts.py b/synapse/handlers/receipts.py index 374e961e3b..4911a11535 100644 --- a/synapse/handlers/receipts.py +++ b/synapse/handlers/receipts.py @@ -241,12 +241,18 @@ class ReceiptEventSource(EventSource[int, JsonDict]): async def get_new_events_as( self, from_key: int, service: ApplicationService ) -> Tuple[List[JsonDict], int]: - """Returns a set of new receipt events that an appservice + """Returns a set of new read receipt events that an appservice may be interested in. Args: from_key: the stream position at which events should be fetched from service: The appservice which may be interested + + Returns: + A two-tuple containing the following: + * A list of json dictionaries derived from read receipts that the + appservice may be interested in. + * The current read receipt stream token. """ from_key = int(from_key) to_key = self.get_current_key() diff --git a/synapse/handlers/typing.py b/synapse/handlers/typing.py index d10e9b8ec4..662ea59d42 100644 --- a/synapse/handlers/typing.py +++ b/synapse/handlers/typing.py @@ -467,9 +467,14 @@ class TypingNotificationEventSource(EventSource[int, JsonDict]): Args: from_key: the stream position at which events should be fetched from service: The appservice which may be interested + + Returns: + A two-tuple containing the following: + * A list of json dictionaries derived from typing events that the + appservice may be interested in. + * The latest known room serial. """ with Measure(self.clock, "typing.get_new_events_as"): - from_key = int(from_key) handler = self.get_typing_handler() events = [] |