summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzy <[email protected]>2023-10-26 09:14:42 +0000
committerzy <[email protected]>2023-10-26 09:14:42 +0000
commit03611eb74a1abd44a149f447029f1a4caea817a4 (patch)
treeb649b49b72ce31d3980a2311c7b5f295c4530bfc
parent5751a20cb524994a1fb479e0fe965adafdbe2e9d (diff)
PlugEvents fix err
-rw-r--r--src/event/manager.rs35
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 {