mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 00:35:38 +02:00
## Description Whew, some stuff is still not re-implemented, but it's working! Rabbit's gonna explode with the amount of changes I reckon 😅 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a peer-to-peer relay system using libp2p with enhanced stream forwarding, room state synchronization, and mDNS peer discovery. - Added decentralized room and participant management, metrics publishing, and safe, size-limited, concurrent message streaming with robust framing and callback dispatching. - Implemented asynchronous, callback-driven message handling over custom libp2p streams replacing WebSocket signaling. - **Improvements** - Migrated signaling and stream protocols from WebSocket to libp2p, improving reliability and scalability. - Simplified configuration and environment variables, removing deprecated flags and adding persistent data support. - Enhanced logging, error handling, and connection management for better observability and robustness. - Refined RTP header extension registration and NAT IP handling for improved WebRTC performance. - **Bug Fixes** - Improved ICE candidate buffering and SDP negotiation in WebRTC connections. - Fixed NAT IP and UDP port range configuration issues. - **Refactor** - Modularized codebase, reorganized relay and server logic, and removed deprecated WebSocket-based components. - Streamlined message structures, removed obsolete enums and message types, and simplified SafeMap concurrency. - Replaced WebSocket signaling with libp2p stream protocols in server and relay components. - **Chores** - Updated and cleaned dependencies across Go, Rust, and JavaScript packages. - Added `.gitignore` for persistent data directory in relay package. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com> Co-authored-by: Philipp Neumann <3daquawolf@gmail.com>
51 lines
1.2 KiB
Rust
51 lines
1.2 KiB
Rust
use crate::latency::LatencyTracker;
|
|
use serde::{Deserialize, Serialize};
|
|
use webrtc::ice_transport::ice_candidate::RTCIceCandidateInit;
|
|
use webrtc::peer_connection::sdp::session_description::RTCSessionDescription;
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageBase {
|
|
pub payload_type: String,
|
|
pub latency: Option<LatencyTracker>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageRaw {
|
|
#[serde(flatten)]
|
|
pub base: MessageBase,
|
|
pub data: serde_json::Value,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageLog {
|
|
#[serde(flatten)]
|
|
pub base: MessageBase,
|
|
pub level: String,
|
|
pub message: String,
|
|
pub time: String,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageMetrics {
|
|
#[serde(flatten)]
|
|
pub base: MessageBase,
|
|
pub usage_cpu: f64,
|
|
pub usage_memory: f64,
|
|
pub uptime: u64,
|
|
pub pipeline_latency: f64,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageICE {
|
|
#[serde(flatten)]
|
|
pub base: MessageBase,
|
|
pub candidate: RTCIceCandidateInit,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct MessageSDP {
|
|
#[serde(flatten)]
|
|
pub base: MessageBase,
|
|
pub sdp: RTCSessionDescription,
|
|
}
|