Skip to content

Commit

Permalink
Rust WIP 2: almost done but tests die
Browse files Browse the repository at this point in the history
  • Loading branch information
ibc committed Jan 2, 2024
1 parent 491b8c8 commit 395dcd0
Show file tree
Hide file tree
Showing 25 changed files with 119 additions and 0 deletions.
1 change: 1 addition & 0 deletions rust/examples/echo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ impl EchoConnection {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
2 changes: 2 additions & 0 deletions rust/examples/multiopus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ impl EchoConnection {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -235,6 +236,7 @@ impl EchoConnection {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}),
Expand Down
1 change: 1 addition & 0 deletions rust/examples/svc-simulcast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ impl SvcSimulcastConnection {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
1 change: 1 addition & 0 deletions rust/examples/videoroom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,7 @@ mod participant {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
24 changes: 24 additions & 0 deletions rust/src/data_structures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ pub struct ListenInfo {
/// Listening port.
#[serde(skip_serializing_if = "Option::is_none")]
pub port: Option<u16>,
/// Socket flags.
#[serde(skip_serializing_if = "Option::is_none")]
pub flags: Option<SocketFlags>,
/// Send buffer size (bytes).
#[serde(skip_serializing_if = "Option::is_none")]
pub send_buffer_size: Option<u32>,
Expand All @@ -80,12 +83,33 @@ impl ListenInfo {
ip: self.ip.to_string(),
announced_ip: self.announced_ip.map(|ip| ip.to_string()),
port: self.port.unwrap_or(0),
flags: self.flags.map(|flags| Box::new(flags.to_fbs())),
send_buffer_size: self.send_buffer_size.unwrap_or(0),
recv_buffer_size: self.recv_buffer_size.unwrap_or(0),
}
}
}

/// UDP/TCP socket flags.
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SocketFlags {
/// Disable dual-stack support so only IPv6 is used (only if ip is IPv6).
pub ipv6_only: bool,
/// Make different transports bind to the same ip and port (only for UDP).
/// Useful for multicast scenarios with plain transport. Use with caution.
pub udp_reuse_port: bool,
}

impl SocketFlags {
pub(crate) fn to_fbs(self) -> transport::SocketFlags {
transport::SocketFlags {
ipv6_only: self.ipv6_only,
udp_reuse_port: self.udp_reuse_port,
}
}
}

/// ICE role.
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
Expand Down
8 changes: 8 additions & 0 deletions rust/src/router.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ impl PipeToRouterOptions {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
},
Expand Down Expand Up @@ -609,6 +610,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// },
Expand Down Expand Up @@ -696,6 +698,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// }))
Expand Down Expand Up @@ -761,6 +764,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// }))
Expand Down Expand Up @@ -971,6 +975,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// },
Expand Down Expand Up @@ -1013,6 +1018,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// },
Expand Down Expand Up @@ -1198,6 +1204,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// },
Expand Down Expand Up @@ -1229,6 +1236,7 @@ impl Router {
/// ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
/// announced_ip: Some("9.9.9.1".parse().unwrap()),
/// port: None,
/// flags: None,
/// send_buffer_size: None,
/// recv_buffer_size: None,
/// },
Expand Down
1 change: 1 addition & 0 deletions rust/src/router/consumer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ async fn init() -> (Router, WebRtcTransport, WebRtcTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
3 changes: 3 additions & 0 deletions rust/src/router/data_consumer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ async fn init() -> (Router, DataProducer) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down Expand Up @@ -74,6 +75,7 @@ fn data_producer_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -127,6 +129,7 @@ fn transport_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down
1 change: 1 addition & 0 deletions rust/src/router/data_producer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ async fn init() -> (Router, WebRtcTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
1 change: 1 addition & 0 deletions rust/src/router/pipe_transport/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ async fn init() -> (Router, Router, WebRtcTransport, WebRtcTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
1 change: 1 addition & 0 deletions rust/src/router/plain_transport/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ fn router_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: Some("4.4.4.4".parse().unwrap()),
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down
1 change: 1 addition & 0 deletions rust/src/router/producer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ async fn init() -> (Router, WebRtcTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
5 changes: 5 additions & 0 deletions rust/src/router/webrtc_transport/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ fn create_with_webrtc_server_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port1),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand All @@ -65,6 +66,7 @@ fn create_with_webrtc_server_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port2),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -233,6 +235,7 @@ fn router_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: Some("9.9.9.1".parse().unwrap()),
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}),
Expand Down Expand Up @@ -274,6 +277,7 @@ fn webrtc_server_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port1),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand All @@ -282,6 +286,7 @@ fn webrtc_server_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port2),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down
1 change: 1 addition & 0 deletions rust/src/webrtc_server/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ fn worker_close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
},
Expand Down
1 change: 1 addition & 0 deletions rust/tests/integration/consumer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ async fn init() -> (
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
4 changes: 4 additions & 0 deletions rust/tests/integration/data_consumer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ async fn init() -> (Worker, Router, WebRtcTransport, DataProducer) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down Expand Up @@ -99,6 +100,7 @@ fn consume_data_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -208,6 +210,7 @@ fn weak() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -572,6 +575,7 @@ fn close_event() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down
2 changes: 2 additions & 0 deletions rust/tests/integration/data_producer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ async fn init() -> (Worker, Router, WebRtcTransport, PlainTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand All @@ -72,6 +73,7 @@ async fn init() -> (Worker, Router, WebRtcTransport, PlainTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down
1 change: 1 addition & 0 deletions rust/tests/integration/multiopus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ async fn init() -> (Router, WebRtcTransport) {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
7 changes: 7 additions & 0 deletions rust/tests/integration/pipe_transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ async fn init() -> (
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down Expand Up @@ -605,6 +606,7 @@ fn weak() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -639,6 +641,7 @@ fn create_with_fixed_port_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: Some(port),
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
})
Expand All @@ -662,6 +665,7 @@ fn create_with_enable_rtx_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -774,6 +778,7 @@ fn create_with_enable_srtp_succeeds() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
});
Expand Down Expand Up @@ -829,6 +834,7 @@ fn create_with_invalid_srtp_parameters_fails() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}))
Expand Down Expand Up @@ -1155,6 +1161,7 @@ fn pipe_to_router_called_twice_generates_single_pair() {
ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
announced_ip: None,
port: None,
flags: None,
send_buffer_size: None,
recv_buffer_size: None,
}));
Expand Down
Loading

0 comments on commit 395dcd0

Please sign in to comment.