pispas_modules/
order_kitchen.rs1use async_trait::async_trait;
2use serde_json::Value;
3use std::any::Any;
4use std::process::Command;
5use easy_trace::prelude::{info, error};
6
7use crate::service::{Service, WebSocketWrite};
8
9pub const ORDER_KITCHEN_VERSION: &str = "1.0.0";
10
11#[derive(Clone)]
12pub struct OrderKitchenService;
13
14impl OrderKitchenService {
15 pub fn new() -> Self {
16 let path = sharing::paths::order_kitchen_path();
17 info!("OrderKitchenService initialized (version: {}) path: {:?}", ORDER_KITCHEN_VERSION, &path);
18
19 match Command::new(path)
20 .spawn()
21 {
22 Ok(_child) => {
23 info!("order-kitchen.exe launched successfully");
24 }
25 Err(e) => {
26 error!("Failed to launch order-kitchen.exe: {:?}", e);
27 }
28 }
29 info!("OrderKitchenService: launching order-kitchen.exe");
30 OrderKitchenService
31 }
32}
33
34#[async_trait]
35impl Service for OrderKitchenService {
36 async fn run(&self, _action: Value, _write: WebSocketWrite) -> (i32, String) {
37 info!("OrderKitchenService: run called (nothing to do)");
38 (0, "OrderKitchenService: run called (nothing to do)".to_string())
39 }
40
41
42 fn as_any(&self) -> &dyn Any {
43 self
44 }
45
46 fn stop_service(&self) {
47 info!("OrderKitchenService: stop_service called (nothing to stop)");
48 }
49
50 fn get_version(&self) -> String {
51 ORDER_KITCHEN_VERSION.to_string()
52 }
53}