Implement `RtpPacket` and `RtcpPacket` traits

dtls-srtp
Takeru Ohta 2017-03-26 15:09:27 +09:00
parent 3f755e781d
commit 1662c3392b
2 changed files with 14 additions and 0 deletions

View File

@ -4,6 +4,7 @@ use handy_async::sync_io::{ReadExt, WriteExt};
use {Result, ErrorKind}; use {Result, ErrorKind};
use io::{ReadFrom, WriteTo}; use io::{ReadFrom, WriteTo};
use packet::Packet; use packet::Packet;
use traits;
use types::{U5, U24, RtpTimestamp, NtpTimestamp, NtpMiddleTimetamp, Ssrc, SsrcOrCsrc}; use types::{U5, U24, RtpTimestamp, NtpTimestamp, NtpMiddleTimetamp, Ssrc, SsrcOrCsrc};
use constants::RTP_VERSION; use constants::RTP_VERSION;
@ -32,6 +33,7 @@ pub enum RtcpPacket {
App(RtcpApplicationDefined), App(RtcpApplicationDefined),
} }
impl Packet for RtcpPacket {} impl Packet for RtcpPacket {}
impl traits::RtcpPacket for RtcpPacket {}
impl ReadFrom for RtcpPacket { impl ReadFrom for RtcpPacket {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let mut buf = [0; 2]; let mut buf = [0; 2];
@ -172,6 +174,8 @@ impl RtcpSenderReport {
} }
} }
} }
impl Packet for RtcpSenderReport {}
impl traits::RtcpPacket for RtcpSenderReport {}
impl ReadFrom for RtcpSenderReport { impl ReadFrom for RtcpSenderReport {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let (reception_report_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_SR)); let (reception_report_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_SR));
@ -300,6 +304,8 @@ impl RtcpReceiverReport {
} }
} }
} }
impl Packet for RtcpReceiverReport {}
impl traits::RtcpPacket for RtcpReceiverReport {}
impl ReadFrom for RtcpReceiverReport { impl ReadFrom for RtcpReceiverReport {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let (reception_report_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_RR)); let (reception_report_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_RR));
@ -349,6 +355,8 @@ impl RtcpSourceDescription {
RtcpSourceDescription { chunks: Vec::new() } RtcpSourceDescription { chunks: Vec::new() }
} }
} }
impl Packet for RtcpSourceDescription {}
impl traits::RtcpPacket for RtcpSourceDescription {}
impl ReadFrom for RtcpSourceDescription { impl ReadFrom for RtcpSourceDescription {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let (source_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_SDES)); let (source_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_SDES));
@ -498,6 +506,8 @@ impl RtcpGoodbye {
} }
} }
} }
impl Packet for RtcpGoodbye {}
impl traits::RtcpPacket for RtcpGoodbye {}
impl ReadFrom for RtcpGoodbye { impl ReadFrom for RtcpGoodbye {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let (source_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_BYE)); let (source_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_BYE));
@ -547,6 +557,8 @@ pub struct RtcpApplicationDefined {
pub name: [u8; 4], pub name: [u8; 4],
pub data: Vec<u8>, pub data: Vec<u8>,
} }
impl Packet for RtcpApplicationDefined {}
impl traits::RtcpPacket for RtcpApplicationDefined {}
impl ReadFrom for RtcpApplicationDefined { impl ReadFrom for RtcpApplicationDefined {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let (subtype, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_APP)); let (subtype, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_APP));

View File

@ -4,6 +4,7 @@ use handy_async::sync_io::{ReadExt, WriteExt};
use {Result, ErrorKind}; use {Result, ErrorKind};
use io::{ReadFrom, WriteTo}; use io::{ReadFrom, WriteTo};
use packet::Packet; use packet::Packet;
use traits;
use types::{U7, RtpTimestamp, Ssrc, Csrc}; use types::{U7, RtpTimestamp, Ssrc, Csrc};
use constants::RTP_VERSION; use constants::RTP_VERSION;
@ -14,6 +15,7 @@ pub struct RtpPacket {
pub padding: Vec<u8>, pub padding: Vec<u8>,
} }
impl Packet for RtpPacket {} impl Packet for RtpPacket {}
impl traits::RtpPacket for RtpPacket {}
impl ReadFrom for RtpPacket { impl ReadFrom for RtpPacket {
fn read_from<R: Read>(reader: &mut R) -> Result<Self> { fn read_from<R: Read>(reader: &mut R) -> Result<Self> {
let header = track_try!(RtpFixedHeader::read_from(reader)); let header = track_try!(RtpFixedHeader::read_from(reader));