diff --git a/lact-daemon/src/server/mod.rs b/lact-daemon/src/server/mod.rs index 9d0686f..18145b9 100644 --- a/lact-daemon/src/server/mod.rs +++ b/lact-daemon/src/server/mod.rs @@ -5,10 +5,7 @@ mod vulkan; use self::handler::Handler; use crate::{config::Config, socket}; -use lact_schema::{ - request::Request, - response::{Pong, Response}, -}; +use lact_schema::{Pong, Request, Response}; use serde::Serialize; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, @@ -79,7 +76,7 @@ async fn handle_stream(stream: UnixStream, handler: Handler) -> anyhow::Result<( #[instrument(level = "debug", skip(handler))] async fn handle_request<'a>(request: Request<'a>, handler: &'a Handler) -> anyhow::Result> { match request { - Request::Ping => ok_response(Pong), + Request::Ping => ok_response(ping()), Request::ListDevices => ok_response(handler.list_devices()), Request::DeviceInfo { id } => ok_response(handler.get_device_info(id)?), Request::DeviceStats { id } => ok_response(handler.get_gpu_stats(id)?), @@ -93,3 +90,14 @@ async fn handle_request<'a>(request: Request<'a>, handler: &'a Handler) -> anyho fn ok_response(data: T) -> anyhow::Result> { Ok(serde_json::to_vec(&Response::Ok(data))?) } + +fn ping() -> Pong<'static> { + let version = env!("CARGO_PKG_VERSION"); + let profile = if cfg!(debug_assertions) { + "debug" + } else { + "release" + }; + + Pong { version, profile } +} diff --git a/lact-gui/src/client.rs b/lact-gui/src/client.rs index ad9be34..79a37eb 100644 --- a/lact-gui/src/client.rs +++ b/lact-gui/src/client.rs @@ -1,7 +1,5 @@ use anyhow::{anyhow, Context}; -use lact_schema::{ - request::Request, response::Response, DeviceInfo, DeviceListEntry, DeviceStats, FanCurveMap, -}; +use lact_schema::{DeviceInfo, DeviceListEntry, DeviceStats, FanCurveMap, Request, Response}; use nix::unistd::getuid; use serde::Deserialize; use std::{ diff --git a/lact-schema/src/lib.rs b/lact-schema/src/lib.rs index 09664cb..ef8046e 100644 --- a/lact-schema/src/lib.rs +++ b/lact-schema/src/lib.rs @@ -1,8 +1,12 @@ -pub mod request; -pub mod response; +mod request; +mod response; + #[cfg(test)] mod tests; +pub use request::Request; +pub use response::Response; + pub use amdgpu_sysfs::{ gpu_handle::{ overdrive::{ClocksTable, ClocksTableGen}, @@ -20,6 +24,12 @@ use std::{ pub type FanCurveMap = BTreeMap; +#[derive(Serialize, Deserialize, Debug)] +pub struct Pong<'a> { + pub version: &'a str, + pub profile: &'a str, +} + #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DeviceListEntry<'a> { pub id: &'a str, diff --git a/lact-schema/src/response.rs b/lact-schema/src/response.rs index b83e4da..ae1f9ce 100644 --- a/lact-schema/src/response.rs +++ b/lact-schema/src/response.rs @@ -6,6 +6,3 @@ pub enum Response { Ok(T), Error(String), } - -#[derive(Serialize, Deserialize, Debug)] -pub struct Pong; diff --git a/lact-schema/src/tests.rs b/lact-schema/src/tests.rs index 77221a2..3ca1837 100644 --- a/lact-schema/src/tests.rs +++ b/lact-schema/src/tests.rs @@ -1,7 +1,4 @@ -use crate::{ - request::Request, - response::{Pong, Response}, -}; +use crate::{Pong, Request, Response}; use serde_json::json; #[test] @@ -18,9 +15,15 @@ fn ping_requset() { fn pong_response() { let expected_response = json!({ "status": "ok", - "data": null + "data": { + "version": "0.0.1", + "profile": "debug" + } + }); + let response = Response::Ok(Pong { + version: "0.0.1", + profile: "debug", }); - let response = Response::Ok(Pong); assert_eq!(serde_json::to_value(&response).unwrap(), expected_response); }