@@ -26,8 +26,8 @@ using namespace score::hm::logic;
2626FFICode health_monitor_builder_create (FFIHandle* health_monitor_builder_handle_out);
2727FFICode health_monitor_builder_destroy (FFIHandle health_monitor_builder_handle);
2828FFICode health_monitor_builder_build (FFIHandle health_monitor_builder_handle,
29- uint32_t supervisor_cycle_ms,
30- uint32_t internal_cycle_ms,
29+ const uint64_t * supervisor_cycle_ms,
30+ const uint64_t * internal_cycle_ms,
3131 FFIHandle* health_monitor_handle_out);
3232FFICode health_monitor_builder_add_deadline_monitor (FFIHandle health_monitor_builder_handle,
3333 const MonitorTag* monitor_tag,
@@ -115,13 +115,17 @@ HealthMonitorBuilder HealthMonitorBuilder::add_logic_monitor(const MonitorTag& m
115115
116116HealthMonitorBuilder HealthMonitorBuilder::with_internal_processing_cycle (std::chrono::milliseconds cycle_duration) &&
117117{
118- internal_processing_cycle_duration_ = cycle_duration;
118+ auto count{cycle_duration.count ()};
119+ SCORE_LANGUAGE_FUTURECPP_ASSERT_MESSAGE (count >= 0 , " cycle duration must be positive" );
120+ internal_processing_cycle_ms_ = count;
119121 return std::move (*this );
120122}
121123
122124HealthMonitorBuilder HealthMonitorBuilder::with_supervisor_api_cycle (std::chrono::milliseconds cycle_duration) &&
123125{
124- supervisor_api_cycle_duration_ = cycle_duration;
126+ auto count{cycle_duration.count ()};
127+ SCORE_LANGUAGE_FUTURECPP_ASSERT_MESSAGE (count >= 0 , " cycle duration must be positive" );
128+ supervisor_api_cycle_ms_ = count;
125129 return std::move (*this );
126130}
127131
@@ -130,12 +134,23 @@ score::cpp::expected<HealthMonitor, Error> HealthMonitorBuilder::build() &&
130134 auto health_monitor_builder_handle = health_monitor_builder_handle_.drop_by_rust ();
131135 SCORE_LANGUAGE_FUTURECPP_PRECONDITION (health_monitor_builder_handle.has_value ());
132136
133- uint32_t supervisor_duration_ms = static_cast <uint32_t >(supervisor_api_cycle_duration_.count ());
134- uint32_t internal_duration_ms = static_cast <uint32_t >(internal_processing_cycle_duration_.count ());
137+ // Handle optional parameters.
138+ const uint64_t * supervisor_api_cycle_ms{nullptr };
139+ const uint64_t * internal_processing_cycle_ms{nullptr };
140+ if (supervisor_api_cycle_ms_.has_value ())
141+ {
142+ supervisor_api_cycle_ms = &supervisor_api_cycle_ms_.value ();
143+ }
144+ if (internal_processing_cycle_ms_.has_value ())
145+ {
146+ internal_processing_cycle_ms = &internal_processing_cycle_ms_.value ();
147+ }
135148
136149 FFIHandle health_monitor_handle{nullptr };
137- auto result{health_monitor_builder_build (
138- health_monitor_builder_handle.value (), supervisor_duration_ms, internal_duration_ms, &health_monitor_handle)};
150+ auto result{health_monitor_builder_build (health_monitor_builder_handle.value (),
151+ supervisor_api_cycle_ms,
152+ internal_processing_cycle_ms,
153+ &health_monitor_handle)};
139154 if (result != kSuccess )
140155 {
141156 return score::cpp::unexpected (static_cast <Error>(result));
0 commit comments