From cf26a1f3192b18b07d1582462311458953631b4b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 15 Apr 2026 12:55:52 +0800 Subject: [PATCH] feat(core): add shared platform skeleton --- Cargo.lock | 80 ++++++++++++------- crates/app_feeder_distributor/src/main.rs | 1 + crates/app_operation_system/src/main.rs | 1 + crates/plc_platform_core/src/bootstrap.rs | 5 ++ crates/plc_platform_core/src/lib.rs | 2 + .../plc_platform_core/src/platform_context.rs | 14 ++++ .../tests/bootstrap_smoke.rs | 11 +++ 7 files changed, 86 insertions(+), 28 deletions(-) create mode 100644 crates/app_feeder_distributor/src/main.rs create mode 100644 crates/app_operation_system/src/main.rs create mode 100644 crates/plc_platform_core/src/bootstrap.rs create mode 100644 crates/plc_platform_core/src/lib.rs create mode 100644 crates/plc_platform_core/src/platform_context.rs create mode 100644 crates/plc_platform_core/tests/bootstrap_smoke.rs diff --git a/Cargo.lock b/Cargo.lock index 0bea23e..09ca8df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -105,6 +105,33 @@ version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +[[package]] +name = "app_feeder_distributor" +version = "0.1.0" +dependencies = [ + "axum", + "dotenv", + "plc_platform_core", + "tokio", + "tower-http", + "tracing", + "tray-icon", + "webbrowser", + "winit", +] + +[[package]] +name = "app_operation_system" +version = "0.1.0" +dependencies = [ + "axum", + "dotenv", + "plc_platform_core", + "tokio", + "tower-http", + "tracing", +] + [[package]] name = "arc-swap" version = "1.8.2" @@ -1265,34 +1292,6 @@ dependencies = [ "slab", ] -[[package]] -name = "gateway_rs" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-opcua", - "async-stream", - "axum", - "chrono", - "dotenv", - "fs2", - "serde", - "serde_json", - "serde_with", - "sqlx", - "time", - "tokio", - "tower-http", - "tracing", - "tracing-appender", - "tracing-subscriber", - "tray-icon", - "uuid", - "validator", - "webbrowser", - "winit", -] - [[package]] name = "gdk" version = "0.18.2" @@ -2715,6 +2714,31 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "plc_platform_core" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-opcua", + "async-stream", + "axum", + "chrono", + "dotenv", + "fs2", + "serde", + "serde_json", + "serde_with", + "sqlx", + "time", + "tokio", + "tower-http", + "tracing", + "tracing-appender", + "tracing-subscriber", + "uuid", + "validator", +] + [[package]] name = "png" version = "0.17.16" diff --git a/crates/app_feeder_distributor/src/main.rs b/crates/app_feeder_distributor/src/main.rs new file mode 100644 index 0000000..e71fdf5 --- /dev/null +++ b/crates/app_feeder_distributor/src/main.rs @@ -0,0 +1 @@ +fn main() {} \ No newline at end of file diff --git a/crates/app_operation_system/src/main.rs b/crates/app_operation_system/src/main.rs new file mode 100644 index 0000000..e71fdf5 --- /dev/null +++ b/crates/app_operation_system/src/main.rs @@ -0,0 +1 @@ +fn main() {} \ No newline at end of file diff --git a/crates/plc_platform_core/src/bootstrap.rs b/crates/plc_platform_core/src/bootstrap.rs new file mode 100644 index 0000000..35da13d --- /dev/null +++ b/crates/plc_platform_core/src/bootstrap.rs @@ -0,0 +1,5 @@ +use crate::platform_context::PlatformContext; + +pub fn bootstrap_platform() -> PlatformContext { + PlatformContext::new("bootstrap") +} diff --git a/crates/plc_platform_core/src/lib.rs b/crates/plc_platform_core/src/lib.rs new file mode 100644 index 0000000..b862446 --- /dev/null +++ b/crates/plc_platform_core/src/lib.rs @@ -0,0 +1,2 @@ +pub mod bootstrap; +pub mod platform_context; \ No newline at end of file diff --git a/crates/plc_platform_core/src/platform_context.rs b/crates/plc_platform_core/src/platform_context.rs new file mode 100644 index 0000000..4dee75f --- /dev/null +++ b/crates/plc_platform_core/src/platform_context.rs @@ -0,0 +1,14 @@ +use std::sync::Arc; + +#[derive(Clone)] +pub struct PlatformContext { + pub config_name: Arc, +} + +impl PlatformContext { + pub fn new(config_name: impl Into>) -> Self { + Self { + config_name: config_name.into(), + } + } +} \ No newline at end of file diff --git a/crates/plc_platform_core/tests/bootstrap_smoke.rs b/crates/plc_platform_core/tests/bootstrap_smoke.rs new file mode 100644 index 0000000..8cadc6d --- /dev/null +++ b/crates/plc_platform_core/tests/bootstrap_smoke.rs @@ -0,0 +1,11 @@ +use plc_platform_core::bootstrap::bootstrap_platform; +use plc_platform_core::platform_context::PlatformContext; + +#[test] +fn platform_context_type_is_public() { + let context = bootstrap_platform(); + assert_eq!(context.config_name.as_ref(), "bootstrap"); + + fn assert_send_sync_clone() {} + assert_send_sync_clone::(); +}