Skip to main content

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}