From 62d3493447ae9a8e8327fb83ea486fb5168128b7 Mon Sep 17 00:00:00 2001 From: some body Date: Thu, 16 Sep 2021 16:05:36 -0500 Subject: [PATCH] RircdState::run() --- src/event.rs | 8 ++++---- src/irc_endpoint.rs | 9 ++++++++- src/state.rs | 20 +++++++++++++------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/event.rs b/src/event.rs index eaae9c9..0b8d6c6 100644 --- a/src/event.rs +++ b/src/event.rs @@ -1,16 +1,16 @@ use tokio::sync::oneshot; use eyre::Result; -enum InternalEvent { +pub enum InternalEvent { } -enum EventKind { +pub enum EventKind { Message, Internal(InternalEvent), } pub struct Event { - kind: EventKind, - result_channel: oneshot::Receiver>, + pub kind: EventKind, + pub result_receiver: oneshot::Receiver>, } diff --git a/src/irc_endpoint.rs b/src/irc_endpoint.rs index b224476..64f88e2 100644 --- a/src/irc_endpoint.rs +++ b/src/irc_endpoint.rs @@ -3,7 +3,7 @@ use async_trait::async_trait; use tokio::sync::{mpsc,oneshot}; use std::sync::Arc; use eyre::Result; -use crate::event::Event; +use crate::event::{EventKind,Event}; pub struct IrcEndpoint { } @@ -21,5 +21,12 @@ impl Endpoint for IrcEndpoint { async fn listen(self: Arc, success_status_send: oneshot::Sender>, event_receiver: mpsc::Sender) { success_status_send.send(Ok(())); + + let (s,r) = oneshot::channel(); + event_receiver.send( + Event { + kind: EventKind::Message, + result_receiver: r, + }).await; } } diff --git a/src/state.rs b/src/state.rs index 256f9ea..2df9794 100644 --- a/src/state.rs +++ b/src/state.rs @@ -5,7 +5,7 @@ use std::time::Instant; use std::sync::Arc; use tokio::sync::oneshot; use tokio::sync::mpsc; -use crate::event::Event; +use crate::event::{EventKind,Event}; use crate::endpoint::Endpoint; use crate::irc_endpoint::IrcEndpoint; @@ -68,12 +68,18 @@ impl RircdState { //> who needs a daemon that does nothing and where nothing can be configured to be done - tokio::select! { - event = event_receiver.recv() => { - match event { - _ => {}, - }; - }, + loop { + println!("received event"); + tokio::select! { + event = event_receiver.recv() => { + //TODO don't unwrap() I guess + match event.unwrap().kind { + EventKind::Internal(ev) => {}, + EventKind::Message => {}, + _ => {}, + }; + }, + }; } Ok(())