Files
client-sdk-rust/crates/livekit-core/src/rtc_engine.rs
T
Théo Monnom f643f458f8 test #1
2022-09-14 21:33:34 +02:00

60 lines
1.8 KiB
Rust

use crate::proto::signal_response;
use crate::signal_client::{SignalClient, SignalClientError};
use log::error;
use tokio::sync::broadcast;
pub struct RTCEngine {
signal_client: SignalClient,
}
impl RTCEngine {
pub fn new() -> RTCEngine {
Self {
signal_client: SignalClient::new(),
}
}
pub async fn connect(&mut self, url: &str, token: &str) -> Result<(), SignalClientError> {
self.signal_client.connect(url, token).await?;
tokio::spawn(Self::handle_rtc(
self.signal_client.response_rx.resubscribe(),
));
Ok(())
}
pub fn update(&self) {}
async fn handle_rtc(mut signal_receiver: broadcast::Receiver<signal_response::Message>) {
loop {
let msg = match signal_receiver.recv().await {
Ok(msg) => msg,
Err(error) => {
error!("Failed to receive SignalResponse: {:?}", error);
continue;
}
};
match msg {
signal_response::Message::Join(join) => {}
signal_response::Message::Trickle(trickle) => {}
signal_response::Message::Answer(answer) => {}
signal_response::Message::Offer(offer) => {}
_ => {}
}
}
}
}
#[tokio::test]
async fn test_test() {
env_logger::init();
let mut engine = RTCEngine::new();
engine.connect("ws://localhost:7880", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NjQ1OTY4MDYsImlzcyI6IkFQSUNrSG04M01oZ2hQeCIsIm5hbWUiOiJ1c2VyMSIsIm5iZiI6MTY2MDk5NjgwNiwic3ViIjoidXNlcjEiLCJ2aWRlbyI6eyJyb29tIjoibXktZmlyc3Qtcm9vbSIsInJvb21Kb2luIjp0cnVlfX0.SWU_LETMK6ZmFOf38pYjVhpur0o7jJc6u61h8BH7g20").await.unwrap();
// Wait before exiting the program
tokio::time::sleep(core::time::Duration::from_millis(1000 * 25)).await;
}