1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use std::sync::Arc; use std::collections::HashMap; use data_rw::Data; use crate::client::RetResult; use anyhow::*; pub trait IController{ fn register(self:Arc<Self>)->Result<HashMap<i32,Box<dyn FunctionInfo>>>; } #[derive(Default)] pub struct DefaultController; impl IController for DefaultController{ fn register(self:Arc<Self>) -> Result<HashMap<i32, Box<dyn FunctionInfo>>> { Ok(HashMap::new()) } } #[async_trait::async_trait] pub trait FunctionInfo:Send+Sync{ fn function_type(&self)->u8; async fn call(&self,data:Data)->Result<RetResult>; }