diff --git a/src/event.rs b/src/event.rs index 4309d40..cb97c54 100644 --- a/src/event.rs +++ b/src/event.rs @@ -6,7 +6,9 @@ pub enum InternalEvent { Shutdown, } + pub enum EventKind { + //TODO maybe make message a trait Message, Internal(InternalEvent), } diff --git a/src/irc_endpoint.rs b/src/irc_endpoint.rs index fd0eb8b..5dc3a1f 100644 --- a/src/irc_endpoint.rs +++ b/src/irc_endpoint.rs @@ -39,8 +39,7 @@ impl Endpoint for IrcEndpoint { sender_name: self.name(), }).await; - break; - + return; loop { //TODO impl diff --git a/src/state.rs b/src/state.rs index 76f7539..e51ba92 100644 --- a/src/state.rs +++ b/src/state.rs @@ -106,7 +106,7 @@ impl RircdState { let event = event.unwrap(); //EVENT MATCHING - match event.kind { + match &event.kind { //INTERNAL EventKind::Internal(ev) => { @@ -145,9 +145,18 @@ impl RircdState { assert!( event.result_sender.send(EventResponse::Success).is_ok()); }, - //EXTERNAL + //MESSAGE EventKind::Message => { - + //TODO maybe notify sender if one + //of the endpoints isn't connected + //or just write to log or do nothing depending + //on the chosen configuration + iter(&self.endpoints).all(|ep| async { + if ep.endpoint.name() == event.sender_name { + ep.sender.unwrap().send(event); + } + false + }).await; }, }; },