diff options
| author | zy <[email protected]> | 2023-10-26 09:14:42 +0000 |
|---|---|---|
| committer | zy <[email protected]> | 2023-10-26 09:14:42 +0000 |
| commit | 03611eb74a1abd44a149f447029f1a4caea817a4 (patch) | |
| tree | b649b49b72ce31d3980a2311c7b5f295c4530bfc | |
| parent | 5751a20cb524994a1fb479e0fe965adafdbe2e9d (diff) | |
PlugEvents fix err
| -rw-r--r-- | src/event/manager.rs | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/event/manager.rs b/src/event/manager.rs index 7bfbce5..ac191f4 100644 --- a/src/event/manager.rs +++ b/src/event/manager.rs @@ -203,33 +203,42 @@ impl EventManager { #[derive(Clone)] pub(crate) struct PlugEvents { event_mgr: Rc<RefCell<EventManager>>, + pub(crate) plug_id: usize, } impl PlugEvents { pub(crate) fn new() -> PlugEvents { - PlugEvents { - event_mgr: get_eventmange(), - } + let event_mgr = get_eventmange(); + let plug_id = event_mgr.borrow_mut().get_task_id(); + PlugEvents { event_mgr, plug_id } } - pub(crate) async fn check(&mut self, plug_id: usize) -> LinkedList<Event> { + pub(crate) async fn check(&self) -> LinkedList<Event> { use futures_util::future::poll_fn; - poll_fn(|cx| self.event_mgr.borrow_mut().check_event_status(plug_id, cx)).await + poll_fn(|cx| { + self.event_mgr + .borrow_mut() + .check_event_status(self.plug_id, cx) + }) + .await } - pub(crate) fn trigger(&mut self, event: Event) { + pub(crate) fn trigger(&self, event: Event) { self.event_mgr.borrow_mut().trigger(event); } - pub(crate) fn get_task_id(&mut self) -> usize { + pub(crate) fn get_task_id(&self) -> usize { self.event_mgr.borrow_mut().get_task_id() } - pub(crate) fn registers<const N: usize>(&mut self, events: [Event; N], plug_id: usize) { - self.event_mgr.borrow_mut().registers(events, plug_id); + pub(crate) fn registers<E: AsRef<[Event]>>(&self, events: E) { + let events_slice = events.as_ref(); + for event in events_slice { + self.event_mgr.borrow_mut().register(*event, self.plug_id); + } } - pub(crate) fn unregister(&mut self, plug_id: usize) { - self.event_mgr.borrow_mut().unregister(plug_id); + pub(crate) fn unregister(&self) { + self.event_mgr.borrow_mut().unregister(self.plug_id); } } @@ -250,7 +259,7 @@ mod tests { use crate::get_innermost_special_encapsulation; use crate::packet::packet::Encapsulation; use crate::packet::packet::Packet; - use crate::plugin::example2::ExamplePulgin2; + use crate::plugin::example_without_trait::ExamplePulgin_no_trait; use crate::runtime::executor::Executor; use crate::session::session::Session; use crate::session::session::SessionProto; @@ -490,7 +499,7 @@ mod tests { let event_mgr = get_eventmange(); let session_mgr = crate::session::manager::get_sessionmange(); - let mut plugin = ExamplePulgin2::new("Example Plugin"); + let mut plugin = ExamplePulgin_no_trait::new("Example Plugin"); plugin.init(); loop { |
