Rircd/src/irc_endpoint.rs

66 lines
1.8 KiB
Rust
Raw Normal View History

2021-09-16 23:47:52 +02:00
use crate::{endpoint::Endpoint, event::InternalEvent};
2021-09-16 22:40:40 +02:00
use async_trait::async_trait;
2021-09-16 23:47:52 +02:00
use tokio::sync::{mpsc,oneshot,Mutex};
2021-09-16 22:40:40 +02:00
use std::sync::Arc;
use eyre::Result;
2021-09-16 23:47:52 +02:00
use crate::event::{EventKind,Event, EventResponse};
2021-09-16 22:40:40 +02:00
pub struct IrcEndpoint {
}
2021-09-16 23:47:52 +02:00
impl IrcEndpoint {
fn new() -> Result<Self> {
Ok( IrcEndpoint {
})
}
}
2021-09-16 22:40:40 +02:00
#[async_trait]
impl Endpoint for IrcEndpoint {
fn name(&self) -> String {
"test irc_endpoint".into()
}
fn is_active(&self) -> bool {
true
}
2021-09-16 23:54:12 +02:00
async fn listen(self: Arc<Self>, event_state_handler_sender: oneshot::Sender<Result<mpsc::Sender<Event>>>,
2021-09-16 23:47:52 +02:00
event_handler: mpsc::Sender<Event>) {
//TODO find apropiate defeault or size
2021-09-16 23:54:12 +02:00
let (event_sender,event_receiver) = mpsc::channel(64);
2021-09-17 18:25:25 +02:00
let (event_response_send, event_response_recv) = oneshot::channel();
2021-09-16 23:54:12 +02:00
event_state_handler_sender.send(Ok(event_sender));
2021-09-17 18:25:25 +02:00
event_handler.send(
Event {
kind: EventKind::Internal(InternalEvent::Test),
result_sender: event_response_send,
sender_name: self.name(),
}).await;
return;
2021-09-16 23:47:52 +02:00
loop {
2021-09-16 23:51:16 +02:00
//TODO impl
break;
//tokio::select! {
// //socket.recv().parse_ircshit();
//};
//let (event_response_send, event_response_recv) = oneshot::channel();
//event_handler.send(
// Event {
// kind: EventKind::Internal(InternalEvent::Test),
// result_sender: event_response_send,
// }).await;
////TODO don't unwrap
//match event_response_recv.await.unwrap() {
// EventResponse::Success => {},
// _ => {},
//};
2021-09-16 23:47:52 +02:00
}
2021-09-16 23:05:36 +02:00
2021-09-16 22:40:40 +02:00
}
}