@@ -203,6 +203,33 @@ def info(self) -> InfoResponse:
203203 result = self ._send_rpc_request ("/Info" , {})
204204 return InfoResponse .model_validate (result )
205205
206+ def emit_event (
207+ self ,
208+ event : str ,
209+ payload : str | bytes ,
210+ ) -> None :
211+ """
212+ Emit an event. This extends the event to RTMR3 on TDX platform.
213+
214+ Requires Dstack OS 0.5.0 or later.
215+
216+ Args:
217+ event: The event name
218+ payload: The event data as string or bytes
219+
220+ Returns:
221+ None
222+ """
223+ if not event :
224+ raise ValueError ("event name cannot be empty" )
225+
226+ if isinstance (payload , str ):
227+ payload = payload .encode ()
228+
229+ hex_payload = binascii .hexlify (payload ).decode ()
230+ self ._send_rpc_request ("/EmitEvent" , {"event" : event , "payload" : hex_payload })
231+ return None
232+
206233 def get_tls_key (
207234 self ,
208235 subject : str | None = None ,
@@ -285,6 +312,33 @@ async def info(self) -> InfoResponse:
285312 result = await self ._send_rpc_request ("/Info" , {})
286313 return InfoResponse .model_validate (result )
287314
315+ async def emit_event (
316+ self ,
317+ event : str ,
318+ payload : str | bytes ,
319+ ) -> None :
320+ """
321+ Emit an event. This extends the event to RTMR3 on TDX platform.
322+
323+ Requires Dstack OS 0.5.0 or later.
324+
325+ Args:
326+ event: The event name
327+ payload: The event data as string or bytes
328+
329+ Returns:
330+ None
331+ """
332+ if not event :
333+ raise ValueError ("event name cannot be empty" )
334+
335+ if isinstance (payload , str ):
336+ payload = payload .encode ()
337+
338+ hex_payload = binascii .hexlify (payload ).decode ()
339+ await self ._send_rpc_request ("/EmitEvent" , {"event" : event , "payload" : hex_payload })
340+ return None
341+
288342 async def get_tls_key (
289343 self ,
290344 subject : str | None = None ,
0 commit comments