lesavka/client/src/app.rs

49 lines
1.5 KiB
Rust
Raw Normal View History

#![cfg_attr(coverage, allow(unused_imports))]
//! Client relay orchestration for HID input, media downlinks, and webcam/mic uplinks.
2025-06-17 20:54:31 -05:00
2025-06-11 00:37:01 -05:00
use anyhow::Result;
2025-06-30 19:41:35 -05:00
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
use std::time::{Duration, Instant};
use tokio::sync::{broadcast, mpsc};
use tokio_stream::{
StreamExt,
wrappers::{BroadcastStream, errors::BroadcastStreamRecvError},
};
use tonic::{Request, transport::Channel};
use tracing::{debug, error, info, trace, warn};
2025-06-24 23:48:06 -05:00
use winit::{
2025-06-26 17:26:28 -05:00
event::Event,
event_loop::{ControlFlow, EventLoopBuilder},
2025-06-25 09:21:39 -05:00
platform::wayland::EventLoopBuilderExtWayland,
2025-06-24 23:48:06 -05:00
};
2025-06-15 20:19:27 -05:00
2025-06-26 17:26:28 -05:00
use lesavka_common::lesavka::{
Empty, KeyboardReport, MonitorRequest, MouseReport, VideoPacket, relay_client::RelayClient,
2025-06-26 17:26:28 -05:00
};
2025-06-17 08:17:23 -05:00
#[cfg(not(coverage))]
use crate::output::video::{MonitorWindow, UnifiedMonitorWindow};
use crate::{
app_support, handshake, input::camera::CameraCapture, input::inputs::InputAggregator,
2026-04-30 08:16:57 -03:00
input::microphone::MicrophoneCapture, output::audio::AudioOut, paste, relay_transport,
};
2025-06-08 04:11:58 -05:00
2025-06-23 07:18:26 -05:00
pub struct LesavkaClientApp {
2025-06-11 00:37:01 -05:00
aggregator: Option<InputAggregator>,
2025-06-08 04:11:58 -05:00
server_addr: String,
2025-06-08 13:11:31 -05:00
dev_mode: bool,
headless: bool,
2025-06-17 08:17:23 -05:00
kbd_tx: broadcast::Sender<KeyboardReport>,
mou_tx: broadcast::Sender<MouseReport>,
paste_rx: Option<mpsc::UnboundedReceiver<String>>,
remote_capture_enabled: Arc<AtomicBool>,
2025-06-08 04:11:58 -05:00
}
include!("app/session_lifecycle.rs");
include!("app/input_streams.rs");
include!("app/downlink_media.rs");
include!("app/uplink_media.rs");
2025-06-15 20:19:27 -05:00
include!("app/audio_recovery_config.rs");