@@ -59,11 +59,13 @@ pub struct Runtime {
5959pub fn runtime_new (
6060 bridge_options : config:: RuntimeOptions ,
6161) -> BridgeResult < OpaqueOutboundHandle < Runtime > > {
62- let ( telemetry_options, metrics_options, logging_options) = bridge_options. try_into ( ) ?;
62+ let ( telemetry_options, metrics_options, logging_options, worker_heartbeat_interval_millis) =
63+ bridge_options. try_into ( ) ?;
6364
6465 // Create core runtime which starts tokio multi-thread runtime
6566 let runtime_options = RuntimeOptionsBuilder :: default ( )
6667 . telemetry_options ( telemetry_options)
68+ . heartbeat_interval ( worker_heartbeat_interval_millis. map ( Duration :: from_millis) )
6769 . build ( )
6870 . context ( "Failed to build runtime options" ) ?;
6971 let mut core_runtime = CoreRuntime :: new ( runtime_options, TokioRuntimeBuilder :: default ( ) )
@@ -265,6 +267,7 @@ mod config {
265267 log_exporter : LogExporterOptions ,
266268 telemetry : TelemetryOptions ,
267269 metrics_exporter : Option < MetricsExporterOptions > ,
270+ worker_heartbeat_interval_millis : Option < u64 > ,
268271 }
269272
270273 #[ derive( Debug , Clone , TryFromJs ) ]
@@ -321,6 +324,7 @@ mod config {
321324 CoreTelemetryOptions ,
322325 Option < super :: BridgeMetricsExporter > ,
323326 super :: BridgeLogExporter ,
327+ Option < u64 > ,
324328 ) > for RuntimeOptions
325329 {
326330 type Error = BridgeError ;
@@ -330,8 +334,16 @@ mod config {
330334 CoreTelemetryOptions ,
331335 Option < super :: BridgeMetricsExporter > ,
332336 super :: BridgeLogExporter ,
337+ Option < u64 > ,
333338 ) > {
334- let ( telemetry_logger, log_exporter) = match self . log_exporter {
339+ let Self {
340+ log_exporter,
341+ telemetry,
342+ metrics_exporter,
343+ worker_heartbeat_interval_millis,
344+ } = self ;
345+
346+ let ( telemetry_logger, log_exporter) = match log_exporter {
335347 LogExporterOptions :: Console { filter } => (
336348 CoreTelemetryLogger :: Console { filter } ,
337349 BridgeLogExporter :: Console ,
@@ -351,17 +363,21 @@ mod config {
351363 let mut telemetry_options = TelemetryOptionsBuilder :: default ( ) ;
352364 let telemetry_options = telemetry_options
353365 . logging ( telemetry_logger)
354- . metric_prefix ( self . telemetry . metric_prefix )
355- . attach_service_name ( self . telemetry . attach_service_name )
366+ . metric_prefix ( telemetry. metric_prefix )
367+ . attach_service_name ( telemetry. attach_service_name )
356368 . build ( )
357369 . context ( "Failed to build telemetry options" ) ?;
358370
359- let metrics_exporter = self
360- . metrics_exporter
371+ let metrics_exporter = metrics_exporter
361372 . map ( std:: convert:: TryInto :: try_into)
362373 . transpose ( ) ?;
363374
364- Ok ( ( telemetry_options, metrics_exporter, log_exporter) )
375+ Ok ( (
376+ telemetry_options,
377+ metrics_exporter,
378+ log_exporter,
379+ worker_heartbeat_interval_millis,
380+ ) )
365381 }
366382 }
367383
0 commit comments