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,
};
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 futures::{SinkExt, StreamExt};
use futures_rustls::{client::TlsStream, TlsConnector};
@ -134,6 +134,7 @@ impl Connection {
r.answer_to_peer_id = Some(peer_id);
r.answer_offer_id = Some(offer_id);
r.answer = Some(RtcAnswer {
t: RtcAnswerType::Answer,
sdp: ::serde_json::json!(
{"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 {
offer_id: OfferId(rng.gen()),
offer: RtcOffer {
t: RtcOfferType::Offer,
sdp: ::serde_json::json!(
{"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 {
offer: RtcOffer {
t: RtcOfferType::Offer,
sdp: ::serde_json::json!({ "sdp": "abcdef" }),
},
offer_id,
@ -33,6 +34,7 @@ pub fn bench(c: &mut Criterion) {
offers: Some(offers),
numwant: Some(offers_len),
answer: Some(RtcAnswer {
t: RtcAnswerType::Answer,
sdp: ::serde_json::json!({ "sdp": "abcdef" }),
}),
answer_to_peer_id: Some(peer_id),

View file

@ -30,11 +30,26 @@ pub struct OfferId(
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
///
/// Created using https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createOffer
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RtcOffer {
/// Always "offer"
#[serde(rename = "type")]
pub t: RtcOfferType,
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
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RtcAnswer {
/// Always "answer"
#[serde(rename = "type")]
pub t: RtcAnswerType,
pub sdp: ::serde_json::Value,
}

View file

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