hyperion_framework/messages/heartbeat.rs
1// -------------------------------------------------------------------------------------------------
2// Hyperion Framework
3// https://github.com/robert-hannah/hyperion-framework
4//
5// A lightweight component-based TCP framework for building service-oriented Rust applications with
6// CLI control, async messaging, and lifecycle management.
7//
8// Copyright 2025 Robert Hannah
9//
10// Licensed under the Apache License, Version 2.0 (the "License");
11// you may not use this file except in compliance with the License.
12// You may obtain a copy of the License at
13//
14// http://www.apache.org/licenses/LICENSE-2.0
15//
16// Unless required by applicable law or agreed to in writing, software
17// distributed under the License is distributed on an "AS IS" BASIS,
18// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19// See the License for the specific language governing permissions and
20// limitations under the License.
21// -------------------------------------------------------------------------------------------------
22
23/// Enriched form of a HeartbeatRequest, assembled by the container before handing off to the
24/// receiver task. Includes component health data that only the container can observe.
25#[derive(Debug, Clone)]
26pub struct HeartbeatRequest {
27 pub request_id: u64,
28 pub sender_name: String,
29 pub timestamp_ms: u64,
30 pub component_alive: bool,
31 pub ms_since_last_activity: u64,
32 pub container_state_val: usize,
33}
34
35/// Parsed form of a HeartbeatResponse, forwarded by the container to the sender task.
36#[derive(Debug, Clone)]
37pub struct HeartbeatResponse {
38 pub request_id: u64,
39 pub responder_name: String,
40 pub timestamp_ms: u64,
41 pub component_alive: bool,
42 pub ms_since_last_activity: u64,
43 pub container_state_val: usize,
44}