ws: include "type" field in RtcOffer and RtcAnswer

This commit is contained in:
Joakim Frostegård 2023-10-30 19:34:24 +01:00
parent 0789f7ec3b
commit c37bf89650
5 changed files with 25 additions and 1 deletions

View file

@ -6,7 +6,7 @@ use std::{
time::Duration, time::Duration,
}; };
use aquatic_ws_protocol::{InMessage, OfferId, OutMessage, PeerId, RtcAnswer}; use aquatic_ws_protocol::{InMessage, OfferId, OutMessage, PeerId, RtcAnswer, RtcAnswerType};
use async_tungstenite::{client_async, WebSocketStream}; use async_tungstenite::{client_async, WebSocketStream};
use futures::{SinkExt, StreamExt}; use futures::{SinkExt, StreamExt};
use futures_rustls::{client::TlsStream, TlsConnector}; use futures_rustls::{client::TlsStream, TlsConnector};
@ -134,6 +134,7 @@ impl Connection {
r.answer_to_peer_id = Some(peer_id); r.answer_to_peer_id = Some(peer_id);
r.answer_offer_id = Some(offer_id); r.answer_offer_id = Some(offer_id);
r.answer = Some(RtcAnswer { r.answer = Some(RtcAnswer {
t: RtcAnswerType::Answer,
sdp: ::serde_json::json!( sdp: ::serde_json::json!(
{"sdp": "abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-"} {"sdp": "abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-"}
), ),

View file

@ -51,6 +51,7 @@ fn create_announce_request(
offers.push(AnnounceRequestOffer { offers.push(AnnounceRequestOffer {
offer_id: OfferId(rng.gen()), offer_id: OfferId(rng.gen()),
offer: RtcOffer { offer: RtcOffer {
t: RtcOfferType::Offer,
sdp: ::serde_json::json!( sdp: ::serde_json::json!(
{"sdp": "abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-"} {"sdp": "abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-abcdefg-"}
) )

View file

@ -16,6 +16,7 @@ pub fn bench(c: &mut Criterion) {
AnnounceRequestOffer { AnnounceRequestOffer {
offer: RtcOffer { offer: RtcOffer {
t: RtcOfferType::Offer,
sdp: ::serde_json::json!({ "sdp": "abcdef" }), sdp: ::serde_json::json!({ "sdp": "abcdef" }),
}, },
offer_id, offer_id,
@ -33,6 +34,7 @@ pub fn bench(c: &mut Criterion) {
offers: Some(offers), offers: Some(offers),
numwant: Some(offers_len), numwant: Some(offers_len),
answer: Some(RtcAnswer { answer: Some(RtcAnswer {
t: RtcAnswerType::Answer,
sdp: ::serde_json::json!({ "sdp": "abcdef" }), sdp: ::serde_json::json!({ "sdp": "abcdef" }),
}), }),
answer_to_peer_id: Some(peer_id), answer_to_peer_id: Some(peer_id),

View file

@ -30,11 +30,26 @@ pub struct OfferId(
pub [u8; 20], pub [u8; 20],
); );
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum RtcOfferType {
Offer,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum RtcAnswerType {
Answer,
}
/// Nested structure with SDP offer from https://www.npmjs.com/package/simple-peer /// Nested structure with SDP offer from https://www.npmjs.com/package/simple-peer
/// ///
/// Created using https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createOffer /// Created using https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createOffer
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RtcOffer { pub struct RtcOffer {
/// Always "offer"
#[serde(rename = "type")]
pub t: RtcOfferType,
pub sdp: ::serde_json::Value, pub sdp: ::serde_json::Value,
} }
@ -43,6 +58,9 @@ pub struct RtcOffer {
/// Created using https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createAnswer /// Created using https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createAnswer
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RtcAnswer { pub struct RtcAnswer {
/// Always "answer"
#[serde(rename = "type")]
pub t: RtcAnswerType,
pub sdp: ::serde_json::Value, pub sdp: ::serde_json::Value,
} }

View file

@ -37,11 +37,13 @@ mod tests {
fn rtc_offer() -> RtcOffer { fn rtc_offer() -> RtcOffer {
RtcOffer { RtcOffer {
t: RtcOfferType::Offer,
sdp: ::serde_json::json!({ "sdp": "test" }), sdp: ::serde_json::json!({ "sdp": "test" }),
} }
} }
fn rtc_answer() -> RtcAnswer { fn rtc_answer() -> RtcAnswer {
RtcAnswer { RtcAnswer {
t: RtcAnswerType::Answer,
sdp: ::serde_json::json!({ "sdp": "test" }), sdp: ::serde_json::json!({ "sdp": "test" }),
} }
} }