5454from synapse .events import EventBase
5555from synapse .events .snapshot import EventContext
5656from synapse .federation .federation_client import InvalidResponseError
57- from synapse .handlers ._base import BaseHandler
5857from synapse .logging .context import (
5958 make_deferred_yieldable ,
6059 nested_logging_context ,
@@ -117,16 +116,14 @@ class _NewEventInfo:
117116 claimed_auth_event_map : StateMap [EventBase ]
118117
119118
120- class FederationEventHandler ( BaseHandler ) :
119+ class FederationEventHandler :
121120 """Handles events that originated from federation.
122121
123122 Responsible for handing incoming events and passing them on to the rest
124123 of the homeserver (including auth and state conflict resolutions)
125124 """
126125
127126 def __init__ (self , hs : "HomeServer" ):
128- super ().__init__ (hs )
129-
130127 self .store = hs .get_datastore ()
131128 self .storage = hs .get_storage ()
132129 self .state_store = self .storage .state
@@ -137,11 +134,15 @@ def __init__(self, hs: "HomeServer"):
137134 self ._message_handler = hs .get_message_handler ()
138135 self .action_generator = hs .get_action_generator ()
139136 self ._state_resolution_handler = hs .get_state_resolution_handler ()
137+ # avoid a circular dependency by deferring execution here
138+ self ._get_room_member_handler = hs .get_room_member_handler
140139
141140 self .federation_client = hs .get_federation_client ()
142141 self .third_party_event_rules = hs .get_third_party_event_rules ()
142+ self ._notifier = hs .get_notifier ()
143143
144144 self .is_mine_id = hs .is_mine_id
145+ self ._server_name = hs .hostname
145146 self ._instance_name = hs .get_instance_name ()
146147
147148 self .config = hs .config
@@ -222,7 +223,7 @@ async def on_receive_pdu(self, origin: str, pdu: EventBase) -> None:
222223 # Note that if we were never in the room then we would have already
223224 # dropped the event, since we wouldn't know the room version.
224225 is_in_room = await self ._event_auth_handler .check_host_in_room (
225- room_id , self .server_name
226+ room_id , self ._server_name
226227 )
227228 if not is_in_room :
228229 logger .info (
@@ -435,7 +436,7 @@ async def backfill(
435436 server from invalid events (there is probably no point in trying to
436437 re-fetch invalid events from every other HS in the room.)
437438 """
438- if dest == self .server_name :
439+ if dest == self ._server_name :
439440 raise SynapseError (400 , "Can't backfill from self." )
440441
441442 events = await self .federation_client .backfill (
@@ -1030,7 +1031,7 @@ async def _handle_marker_event(self, origin: str, marker_event: EventBase):
10301031 room_creator = create_event .content .get (EventContentFields .ROOM_CREATOR )
10311032 if (
10321033 not room_version .msc2716_historical
1033- or not self .hs . config .experimental .msc2716_enabled
1034+ or not self .config .experimental .msc2716_enabled
10341035 or marker_event .sender != room_creator
10351036 ):
10361037 return
@@ -1349,7 +1350,7 @@ async def _maybe_kick_guest_users(self, event: EventBase) -> None:
13491350
13501351 current_state_map = await self .state_handler .get_current_state (event .room_id )
13511352 current_state = list (current_state_map .values ())
1352- await self .hs . get_room_member_handler ().kick_guest_users (current_state )
1353+ await self ._get_room_member_handler ().kick_guest_users (current_state )
13531354
13541355 async def _check_for_soft_fail (
13551356 self ,
@@ -1804,7 +1805,7 @@ async def _notify_persisted_event(
18041805 event_pos = PersistedEventPosition (
18051806 self ._instance_name , event .internal_metadata .stream_ordering
18061807 )
1807- self .notifier .on_new_room_event (
1808+ self ._notifier .on_new_room_event (
18081809 event , event_pos , max_stream_token , extra_users = extra_users
18091810 )
18101811
0 commit comments