diff --git a/src/process1/src/plugin/manager.rs b/src/process1/src/plugin/manager.rs new file mode 100644 index 0000000000000000000000000000000000000000..824ee2ff8701cf81d994c0760b200a32ddaf9398 --- /dev/null +++ b/src/process1/src/plugin/manager.rs @@ -0,0 +1,74 @@ +struct Manager { + id:String, + name:String, + desc:String, + configdir:String, + m_obj_list:Vec , //manage obj list +} + +trait MangerMethod { + fn init(self); + + fn load(&mut self); + + fn dispatch(&mut self) -> Option; + + fn relaod(&mut self) -> Option; + + fn destroy(&mut self); + + // reserved for sd event + fn event_dispatch(&mut self) -> Option; +} + +struct unit{ + +} +struct UnitManager { + unitManager: Manager +} + +impl MangerMethod for UnitManager { + fn init(self){ + let id = self.unitManager.id; + self.unitManager.configdir; + } + + fn load(&mut self){ + self.unitManager.m_obj_list.push(unit{}); + } + + fn dispatch(&mut self) -> Option { + None + } + + fn relaod(&mut self) -> Option{ + None + } + + fn destroy(&mut self){ + + } + + // reserved for sd event + fn event_dispatch(&mut self) -> Option{ + None + } + + +} + +pub fn load_Manager(){ + //**此处应该支持扩展多种Manager */ + let manager:Manager = Manager{ + id: todo!(), + name: todo!(), + desc: todo!(), + configdir: todo!(), + m_obj_list: todo!(), + }; + let um = UnitManager{unitManager:manager}; + um.init(); + um.load(); + um.dispatch(); +} diff --git a/src/process1/src/plugin/mod.rs b/src/process1/src/plugin/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..ff8de9eb9a409b61308ada198e5c9c052af74c9f --- /dev/null +++ b/src/process1/src/plugin/mod.rs @@ -0,0 +1 @@ +pub mod manager;