@@ -85,7 +85,7 @@ async def stop_listening(self):
8585 # Log any exceptions that were raised.
8686 except Exception as err :
8787 self .log .error (err )
88-
88+
8989 _listening_task : t .Optional [t .Awaitable ] = Any (allow_none = True )
9090
9191 def handle_incoming_message (self , channel_name : str , msg : list [bytes ]):
@@ -181,7 +181,7 @@ async def handle_outgoing_message(self, channel_name: str, msg: list[bytes]):
181181 return
182182
183183 # Update the last activity.
184- #self.last_activity = self.session.msg_time
184+ # self.last_activity = self.session.msg_time
185185
186186 await self .send_message_to_listeners (channel_name , msg )
187187
@@ -229,6 +229,32 @@ async def handle_iopub_message(self, msg: list[bytes]) -> t.Optional[list[bytes]
229229 else :
230230 return msg
231231
232+ # NOTE: Inject display data into ydoc.
233+ if dmsg ["msg_type" ] == "display_data" :
234+ # Forward to all yrooms.
235+ for yroom in self ._yrooms :
236+ update_document_message = b""
237+ # yroom.add_message(update_document_message)
238+
239+ # TODO: returning message temporarily to not break UI
240+ # If the message isn't handled above, return it and it will
241+ # be forwarded to all listeners
242+ return msg
243+
244+ def send_kernel_awareness (self , kernel_status : dict ):
245+ """
246+ Send kernel status awareness messages to all yrooms
247+ """
248+ for yroom in self ._yrooms :
249+ awareness = yroom .get_awareness ()
250+ if awareness is None :
251+ self .log .error (f"awareness cannot be None. room_id: { yroom .room_id } " )
252+ continue
253+ self .log .debug (f"current state: { awareness .get_local_state ()} room_id: { yroom .room_id } . kernel status: { kernel_status } " )
254+ awareness .set_local_state_field ("kernel" , kernel_status )
255+ self .log .debug (f"current state: { awareness .get_local_state ()} room_id: { yroom .room_id } " )
256+
257+
232258 async def add_yroom (self , yroom : YRoom ):
233259 """
234260 Register a YRoom with this kernel client. YRooms will
0 commit comments