diff --git a/src/events.rs b/src/events.rs new file mode 100644 index 0000000..7d405c1 --- /dev/null +++ b/src/events.rs @@ -0,0 +1,51 @@ +use tokio::sync::oneshot; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Source { + Irc, + Owncast, +} + +#[derive(Debug, Clone)] +pub enum BridgeEvent { + ChatMessage { + source: Source, + username: String, + body: String, + id: Option, + }, + StreamStarted { + title: String, + }, + StreamStopped, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum OwncastState { + Online, + OfflineChatOpen, + Unavailable, +} + +#[derive(Debug)] +pub enum ControlCommand { + IrcConnect, + IrcDisconnect, + IrcReconnect, + OwncastConnect, + OwncastDisconnect, + OwncastReconnect, + Status { + reply: oneshot::Sender, + }, + Quit, +} + +#[derive(Debug, Clone, serde::Serialize)] +pub struct BridgeStatus { + pub irc_connected: bool, + pub owncast_state: String, + pub webhook_listening: bool, + pub websocket_connected: bool, + pub uptime_secs: u64, +} diff --git a/src/main.rs b/src/main.rs index 98a45b6..86ab3db 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ mod config; +mod events; fn main() { println!("owncast-irc-bridge");