forked from MirrorHub/synapse
make FederationClient.get_missing_events async
This commit is contained in:
parent
abadf44eb2
commit
6deeefb68c
1 changed files with 20 additions and 20 deletions
|
@ -25,6 +25,7 @@ from typing import (
|
||||||
Iterable,
|
Iterable,
|
||||||
List,
|
List,
|
||||||
Optional,
|
Optional,
|
||||||
|
Sequence,
|
||||||
Tuple,
|
Tuple,
|
||||||
TypeVar,
|
TypeVar,
|
||||||
)
|
)
|
||||||
|
@ -828,34 +829,33 @@ class FederationClient(FederationBase):
|
||||||
third_party_instance_id=third_party_instance_id,
|
third_party_instance_id=third_party_instance_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
async def get_missing_events(
|
||||||
def get_missing_events(
|
|
||||||
self,
|
self,
|
||||||
destination,
|
destination: str,
|
||||||
room_id,
|
room_id: str,
|
||||||
earliest_events_ids,
|
earliest_events_ids: Sequence[str],
|
||||||
latest_events,
|
latest_events: Iterable[EventBase],
|
||||||
limit,
|
limit: int,
|
||||||
min_depth,
|
min_depth: int,
|
||||||
timeout,
|
timeout: int,
|
||||||
):
|
) -> List[EventBase]:
|
||||||
"""Tries to fetch events we are missing. This is called when we receive
|
"""Tries to fetch events we are missing. This is called when we receive
|
||||||
an event without having received all of its ancestors.
|
an event without having received all of its ancestors.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
destination (str)
|
destination
|
||||||
room_id (str)
|
room_id
|
||||||
earliest_events_ids (list): List of event ids. Effectively the
|
earliest_events_ids: List of event ids. Effectively the
|
||||||
events we expected to receive, but haven't. `get_missing_events`
|
events we expected to receive, but haven't. `get_missing_events`
|
||||||
should only return events that didn't happen before these.
|
should only return events that didn't happen before these.
|
||||||
latest_events (list): List of events we have received that we don't
|
latest_events: List of events we have received that we don't
|
||||||
have all previous events for.
|
have all previous events for.
|
||||||
limit (int): Maximum number of events to return.
|
limit: Maximum number of events to return.
|
||||||
min_depth (int): Minimum depth of events tor return.
|
min_depth: Minimum depth of events to return.
|
||||||
timeout (int): Max time to wait in ms
|
timeout: Max time to wait in ms
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
content = yield self.transport_layer.get_missing_events(
|
content = await self.transport_layer.get_missing_events(
|
||||||
destination=destination,
|
destination=destination,
|
||||||
room_id=room_id,
|
room_id=room_id,
|
||||||
earliest_events=earliest_events_ids,
|
earliest_events=earliest_events_ids,
|
||||||
|
@ -865,14 +865,14 @@ class FederationClient(FederationBase):
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
)
|
)
|
||||||
|
|
||||||
room_version = yield self.store.get_room_version_id(room_id)
|
room_version = await self.store.get_room_version_id(room_id)
|
||||||
format_ver = room_version_to_event_format(room_version)
|
format_ver = room_version_to_event_format(room_version)
|
||||||
|
|
||||||
events = [
|
events = [
|
||||||
event_from_pdu_json(e, format_ver) for e in content.get("events", [])
|
event_from_pdu_json(e, format_ver) for e in content.get("events", [])
|
||||||
]
|
]
|
||||||
|
|
||||||
signed_events = yield self._check_sigs_and_hash_and_fetch(
|
signed_events = await self._check_sigs_and_hash_and_fetch(
|
||||||
destination, events, outlier=False, room_version=room_version
|
destination, events, outlier=False, room_version=room_version
|
||||||
)
|
)
|
||||||
except HttpResponseException as e:
|
except HttpResponseException as e:
|
||||||
|
|
Loading…
Reference in a new issue