1pub mod webrtc;
10pub(crate) mod websocket;
11
12use crate::key_cache::KeyFetcher;
13use actr_protocol::{AIdCredential, ActrId};
14use async_trait::async_trait;
15
16pub(crate) struct SignalingKeyFetcher {
22 pub(crate) client: std::sync::Arc<dyn webrtc::SignalingClient>,
23 pub(crate) actor_id: ActrId,
24 pub(crate) credential: AIdCredential,
25}
26
27#[async_trait]
28impl KeyFetcher for SignalingKeyFetcher {
29 async fn fetch_key(&self, key_id: u32) -> crate::error::HyperResult<(u32, Vec<u8>)> {
30 self.client
31 .get_signing_key(self.actor_id.clone(), self.credential.clone(), key_id)
32 .await
33 .map_err(|e| {
34 tracing::warn!(key_id, error = ?e, "SignalingKeyFetcher: failed to fetch AIS public key via signaling");
35 crate::error::HyperError::AisBootstrapFailed(format!(
36 "signaling get_signing_key failed: {e:?}"
37 ))
38 })
39 }
40}
41
42pub use webrtc::{
46 AuthConfig, AuthType, DisconnectReason, ReconnectConfig, SignalingClient, SignalingConfig,
47 SignalingEvent, SignalingStats, WebRtcConfig,
48};
49#[cfg(feature = "test-utils")]
50pub use webrtc::{WebRtcCoordinator, WebSocketSignalingClient};