From 1662c3392b12d5355d1fcf342aa3e354852ff048 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Sun, 26 Mar 2017 15:09:27 +0900 Subject: [PATCH] Implement `RtpPacket` and `RtcpPacket` traits --- src/rfc3550/rtcp.rs | 12 ++++++++++++ src/rfc3550/rtp.rs | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/rfc3550/rtcp.rs b/src/rfc3550/rtcp.rs index e244a53..7d5f5ff 100644 --- a/src/rfc3550/rtcp.rs +++ b/src/rfc3550/rtcp.rs @@ -4,6 +4,7 @@ use handy_async::sync_io::{ReadExt, WriteExt}; use {Result, ErrorKind}; use io::{ReadFrom, WriteTo}; use packet::Packet; +use traits; use types::{U5, U24, RtpTimestamp, NtpTimestamp, NtpMiddleTimetamp, Ssrc, SsrcOrCsrc}; use constants::RTP_VERSION; @@ -32,6 +33,7 @@ pub enum RtcpPacket { App(RtcpApplicationDefined), } impl Packet for RtcpPacket {} +impl traits::RtcpPacket for RtcpPacket {} impl ReadFrom for RtcpPacket { fn read_from(reader: &mut R) -> Result { let mut buf = [0; 2]; @@ -172,6 +174,8 @@ impl RtcpSenderReport { } } } +impl Packet for RtcpSenderReport {} +impl traits::RtcpPacket for RtcpSenderReport {} impl ReadFrom for RtcpSenderReport { fn read_from(reader: &mut R) -> Result { 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 { fn read_from(reader: &mut R) -> Result { let (reception_report_count, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_RR)); @@ -349,6 +355,8 @@ impl RtcpSourceDescription { RtcpSourceDescription { chunks: Vec::new() } } } +impl Packet for RtcpSourceDescription {} +impl traits::RtcpPacket for RtcpSourceDescription {} impl ReadFrom for RtcpSourceDescription { fn read_from(reader: &mut R) -> Result { 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 { fn read_from(reader: &mut R) -> Result { 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 data: Vec, } +impl Packet for RtcpApplicationDefined {} +impl traits::RtcpPacket for RtcpApplicationDefined {} impl ReadFrom for RtcpApplicationDefined { fn read_from(reader: &mut R) -> Result { let (subtype, payload) = track_try!(read_sctp(reader, RTCP_PACKET_TYPE_APP)); diff --git a/src/rfc3550/rtp.rs b/src/rfc3550/rtp.rs index 36bb0fa..9376d36 100644 --- a/src/rfc3550/rtp.rs +++ b/src/rfc3550/rtp.rs @@ -4,6 +4,7 @@ use handy_async::sync_io::{ReadExt, WriteExt}; use {Result, ErrorKind}; use io::{ReadFrom, WriteTo}; use packet::Packet; +use traits; use types::{U7, RtpTimestamp, Ssrc, Csrc}; use constants::RTP_VERSION; @@ -14,6 +15,7 @@ pub struct RtpPacket { pub padding: Vec, } impl Packet for RtpPacket {} +impl traits::RtpPacket for RtpPacket {} impl ReadFrom for RtpPacket { fn read_from(reader: &mut R) -> Result { let header = track_try!(RtpFixedHeader::read_from(reader));