#![allow(missing_docs)] use super::{Interconnect, UdpRxMessage, UdpTxMessage, WsMessage}; use crate::{ driver::{Config, CryptoState}, tracks::Track, Bitrate, }; use flume::Sender; use xsalsa20poly1305::XSalsa20Poly1305 as Cipher; pub struct MixerConnection { pub cipher: Cipher, pub crypto_state: CryptoState, pub udp_rx: Sender, pub udp_tx: Sender, } impl Drop for MixerConnection { fn drop(&mut self) { let _ = self.udp_rx.send(UdpRxMessage::Poison); let _ = self.udp_tx.send(UdpTxMessage::Poison); } } pub enum MixerMessage { AddTrack(Track), SetTrack(Option), SetBitrate(Bitrate), SetConfig(Config), SetMute(bool), SetConn(MixerConnection, u32), Ws(Option>), DropConn, ReplaceInterconnect(Interconnect), RebuildEncoder, Poison, }