pispas_modules/
order_kitchen.rs

1use 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}