1515
1616import logging
1717import random
18+ from typing import TYPE_CHECKING , Iterable , List , Optional
1819
1920from synapse .api .constants import EventTypes , Membership
2021from synapse .api .errors import AuthError , SynapseError
2122from synapse .events import EventBase
2223from synapse .handlers .presence import format_user_presence_state
2324from synapse .logging .utils import log_function
24- from synapse .types import UserID
25+ from synapse .streams .config import PaginationConfig
26+ from synapse .types import JsonDict , UserID
2527from synapse .visibility import filter_events_for_client
2628
2729from ._base import BaseHandler
2830
31+ if TYPE_CHECKING :
32+ from synapse .server import HomeServer
33+
34+
2935logger = logging .getLogger (__name__ )
3036
3137
3238class EventStreamHandler (BaseHandler ):
33- def __init__ (self , hs ):
39+ def __init__ (self , hs : "HomeServer" ):
3440 super (EventStreamHandler , self ).__init__ (hs )
3541
36- # Count of active streams per user
37- self ._streams_per_user = {}
38- # Grace timers per user to delay the "stopped" signal
39- self ._stop_timer_per_user = {}
40-
4142 self .distributor = hs .get_distributor ()
4243 self .distributor .declare ("started_user_eventstream" )
4344 self .distributor .declare ("stopped_user_eventstream" )
@@ -52,14 +53,14 @@ def __init__(self, hs):
5253 @log_function
5354 async def get_stream (
5455 self ,
55- auth_user_id ,
56- pagin_config ,
57- timeout = 0 ,
58- as_client_event = True ,
59- affect_presence = True ,
60- room_id = None ,
61- is_guest = False ,
62- ):
56+ auth_user_id : str ,
57+ pagin_config : PaginationConfig ,
58+ timeout : int = 0 ,
59+ as_client_event : bool = True ,
60+ affect_presence : bool = True ,
61+ room_id : Optional [ str ] = None ,
62+ is_guest : bool = False ,
63+ ) -> JsonDict :
6364 """Fetches the events stream for a given user.
6465 """
6566
@@ -98,7 +99,7 @@ async def get_stream(
9899
99100 # When the user joins a new room, or another user joins a currently
100101 # joined room, we need to send down presence for those users.
101- to_add = []
102+ to_add = [] # type: List[JsonDict]
102103 for event in events :
103104 if not isinstance (event , EventBase ):
104105 continue
@@ -110,7 +111,7 @@ async def get_stream(
110111 # Send down presence for everyone in the room.
111112 users = await self .state .get_current_users_in_room (
112113 event .room_id
113- )
114+ ) # type: Iterable[str]
114115 else :
115116 users = [event .state_key ]
116117
@@ -144,20 +145,22 @@ async def get_stream(
144145
145146
146147class EventHandler (BaseHandler ):
147- def __init__ (self , hs ):
148+ def __init__ (self , hs : "HomeServer" ):
148149 super (EventHandler , self ).__init__ (hs )
149150 self .storage = hs .get_storage ()
150151
151- async def get_event (self , user , room_id , event_id ):
152+ async def get_event (
153+ self , user : UserID , room_id : Optional [str ], event_id : str
154+ ) -> Optional [EventBase ]:
152155 """Retrieve a single specified event.
153156
154157 Args:
155- user (synapse.types.UserID) : The user requesting the event
156- room_id (str|None) : The expected room id. We'll return None if the
158+ user: The user requesting the event
159+ room_id: The expected room id. We'll return None if the
157160 event's room does not match.
158- event_id (str) : The event ID to obtain.
161+ event_id: The event ID to obtain.
159162 Returns:
160- dict: An event, or None if there is no event matching this ID.
163+ An event, or None if there is no event matching this ID.
161164 Raises:
162165 SynapseError if there was a problem retrieving this event, or
163166 AuthError if the user does not have the rights to inspect this
0 commit comments