Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit 34d03ea

Browse files
author
Rusty Rain
authored
Merge pull request #10 from algesten/anyhow
Refactor out use of anyhow
2 parents ad721f9 + b99cc4e commit 34d03ea

File tree

31 files changed

+157
-202
lines changed

31 files changed

+157
-202
lines changed

Cargo.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ homepage = "https://webrtc.rs"
1010
repository = "https://github.com/webrtc-rs/rtcp"
1111

1212
[dependencies]
13-
util = { package = "webrtc-util", version = "0.4.3", default-features = false, features = ["marshal"] }
13+
util = { package = "webrtc-util", version = "0.5.0", default-features = false, features = ["marshal"] }
1414
bytes = "1.1.0"
15-
thiserror = "1.0.29"
16-
anyhow = "1.0.44"
15+
thiserror = "1.0"

src/compound_packet/compound_packet_test.rs

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@ fn test_bad_compound() {
5858

5959
Err(err) => {
6060
let a = Error::BadFirstPacket;
61-
assert!(
62-
Error::BadFirstPacket.equal(&err),
61+
assert_eq!(
62+
Error::BadFirstPacket,
63+
err,
6364
"Unmarshal(badcompound) err={:?}, want {:?}",
6465
err,
6566
a,
@@ -150,7 +151,7 @@ fn test_valid_packet() {
150151
"goodbye",
151152
CompoundPacket(vec![
152153
Box::new(ReceiverReport::default()),
153-
Box::new(cname.clone()),
154+
Box::new(cname),
154155
Box::new(Goodbye::default()),
155156
]),
156157
None,
@@ -161,13 +162,7 @@ fn test_valid_packet() {
161162
let result = packet.validate();
162163
assert_eq!(result.is_ok(), error.is_none());
163164
if let (Some(err), Err(got)) = (error, result) {
164-
assert!(
165-
err.equal(&got),
166-
"Valid({}) = {:?}, want {:?}",
167-
name,
168-
got,
169-
err
170-
);
165+
assert_eq!(err, got, "Valid({}) = {:?}, want {:?}", name, got, err);
171166
}
172167
}
173168
}
@@ -242,7 +237,7 @@ fn test_cname() {
242237
"goodbye",
243238
CompoundPacket(vec![
244239
Box::new(ReceiverReport::default()),
245-
Box::new(cname.clone()),
240+
Box::new(cname),
246241
Box::new(Goodbye::default()),
247242
]),
248243
None,
@@ -254,13 +249,7 @@ fn test_cname() {
254249
let err = compound_packet.validate();
255250
assert_eq!(err.is_err(), want_error.is_some());
256251
if let (Some(want), Err(err)) = (&want_error, err) {
257-
assert!(
258-
want.equal(&err),
259-
"Valid({}) = {:?}, want {:?}",
260-
name,
261-
err,
262-
want
263-
);
252+
assert_eq!(*want, err, "Valid({}) = {:?}, want {:?}", name, err, want);
264253
}
265254

266255
let name_result = compound_packet.cname();
@@ -273,13 +262,7 @@ fn test_cname() {
273262

274263
Err(err) => {
275264
if let Some(want) = &want_error {
276-
assert!(
277-
want.equal(&err),
278-
"CNAME({}) = {:?}, want {:?}",
279-
name,
280-
err,
281-
want
282-
);
265+
assert_eq!(*want, err, "CNAME({}) = {:?}, want {:?}", name, err, want);
283266
}
284267
}
285268
}
@@ -303,7 +286,7 @@ fn test_compound_packet_roundtrip() {
303286
"goodbye",
304287
CompoundPacket(vec![
305288
Box::new(ReceiverReport::default()),
306-
Box::new(cname.clone()),
289+
Box::new(cname),
307290
Box::new(Goodbye {
308291
sources: vec![1234],
309292
..Default::default()
@@ -322,12 +305,10 @@ fn test_compound_packet_roundtrip() {
322305
let result = packet.marshal();
323306
if let Some(err) = marshal_error {
324307
if let Err(got) = result {
325-
assert!(
326-
err.equal(&got),
308+
assert_eq!(
309+
err, got,
327310
"marshal {} header: err = {}, want {}",
328-
name,
329-
got,
330-
err
311+
name, got, err
331312
);
332313
} else {
333314
assert!(false, "want error in test {}", name);
@@ -339,11 +320,11 @@ fn test_compound_packet_roundtrip() {
339320

340321
let data1 = result.unwrap();
341322
let c = CompoundPacket::unmarshal(&mut data1.clone())
342-
.expect(format!("unmarshal {} error", name).as_str());
323+
.unwrap_or_else(|_| panic!("unmarshal {} error", name));
343324

344325
let data2 = c
345326
.marshal()
346-
.expect(format!("marshal {} error", name).as_str());
327+
.unwrap_or_else(|_| panic!("marshal {} error", name));
347328

348329
assert_eq!(
349330
data1, data2,

src/compound_packet/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ use crate::{
77
};
88
use util::marshal::{Marshal, MarshalSize, Unmarshal};
99

10-
use anyhow::Result;
1110
use bytes::{Buf, Bytes};
1211
use std::any::Any;
1312
use std::fmt;
1413

14+
type Result<T> = std::result::Result<T, util::Error>;
15+
1516
/// A CompoundPacket is a collection of RTCP packets transmitted as a single packet with
1617
/// the underlying protocol (for example UDP).
1718
///

src/error.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use thiserror::Error;
22

3+
pub type Result<T> = std::result::Result<T, Error>;
4+
35
#[derive(Error, Debug, PartialEq)]
6+
#[non_exhaustive]
47
pub enum Error {
58
/// Wrong marshal size.
69
#[error("Wrong marshal size")]
@@ -86,13 +89,24 @@ pub enum Error {
8689
#[error("Packet status chunk must be 2 bytes")]
8790
PacketStatusChunkLength,
8891

89-
#[allow(non_camel_case_types)]
9092
#[error("{0}")]
91-
new(String),
93+
Util(#[from] util::Error),
94+
95+
#[error("{0}")]
96+
Other(String),
97+
}
98+
99+
impl From<Error> for util::Error {
100+
fn from(e: Error) -> Self {
101+
util::Error::from_std(e)
102+
}
92103
}
93104

94-
impl Error {
95-
pub fn equal(&self, err: &anyhow::Error) -> bool {
96-
err.downcast_ref::<Self>().map_or(false, |e| e == self)
105+
impl PartialEq<util::Error> for Error {
106+
fn eq(&self, other: &util::Error) -> bool {
107+
if let Some(down) = other.downcast_ref::<Error>() {
108+
return self == down;
109+
}
110+
false
97111
}
98112
}

src/goodbye/goodbye_test.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,10 @@ fn test_goodbye_unmarshal() {
117117

118118
if let Some(err) = want_error {
119119
let got_err = got.err().unwrap();
120-
assert!(
121-
err.equal(&got_err),
120+
assert_eq!(
121+
err, got_err,
122122
"Unmarshal {} rr: err = {:?}, want {:?}",
123-
name,
124-
got_err,
125-
err,
123+
name, got_err, err,
126124
);
127125
} else {
128126
let actual = got.unwrap();
@@ -188,7 +186,7 @@ fn test_goodbye_round_trip() {
188186
(
189187
"count overflow",
190188
Goodbye {
191-
sources: too_many_sources.clone(),
189+
sources: too_many_sources,
192190
reason: Bytes::from_static(b""),
193191
},
194192
Some(Error::TooManySources),
@@ -217,17 +215,15 @@ fn test_goodbye_round_trip() {
217215

218216
if let Some(err) = want_error {
219217
let got_err = got.err().unwrap();
220-
assert!(
221-
err.equal(&got_err),
218+
assert_eq!(
219+
err, got_err,
222220
"Unmarshal {} rr: err = {:?}, want {:?}",
223-
name,
224-
got_err,
225-
err,
221+
name, got_err, err,
226222
);
227223
} else {
228224
let mut data = got.ok().unwrap();
229225
let actual =
230-
Goodbye::unmarshal(&mut data).expect(format!("Unmarshal {}", name).as_str());
226+
Goodbye::unmarshal(&mut data).unwrap_or_else(|_| panic!("Unmarshal {}", name));
231227

232228
assert_eq!(
233229
actual, want,

src/goodbye/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ mod goodbye_test;
44
use crate::{error::Error, header::*, packet::*, util::*};
55
use util::marshal::{Marshal, MarshalSize, Unmarshal};
66

7-
use anyhow::Result;
87
use bytes::{Buf, BufMut, Bytes};
98
use std::any::Any;
109
use std::fmt;
1110

11+
type Result<T> = std::result::Result<T, util::Error>;
12+
1213
/// The Goodbye packet indicates that one or more sources are no longer active.
1314
#[derive(Debug, PartialEq, Default, Clone)]
1415
pub struct Goodbye {

src/header.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::error::Error;
22
use util::marshal::{Marshal, MarshalSize, Unmarshal};
33

4-
use anyhow::Result;
54
use bytes::{Buf, BufMut};
65

76
/// PacketType specifies the type of an RTCP packet
@@ -109,7 +108,7 @@ impl MarshalSize for Header {
109108
}
110109

111110
impl Marshal for Header {
112-
fn marshal_to(&self, mut buf: &mut [u8]) -> Result<usize> {
111+
fn marshal_to(&self, mut buf: &mut [u8]) -> Result<usize, util::Error> {
113112
if self.count > 31 {
114113
return Err(Error::InvalidHeader.into());
115114
}
@@ -138,7 +137,7 @@ impl Marshal for Header {
138137

139138
impl Unmarshal for Header {
140139
/// Unmarshal decodes the Header from binary
141-
fn unmarshal<B>(raw_packet: &mut B) -> Result<Self>
140+
fn unmarshal<B>(raw_packet: &mut B) -> Result<Self, util::Error>
142141
where
143142
Self: Sized,
144143
B: Buf,
@@ -241,12 +240,10 @@ mod test {
241240

242241
if let Some(err) = want_error {
243242
let got_err = got.err().unwrap();
244-
assert!(
245-
err.equal(&got_err),
243+
assert_eq!(
244+
err, got_err,
246245
"Unmarshal {}: err = {:?}, want {:?}",
247-
name,
248-
got_err,
249-
err,
246+
name, got_err, err,
250247
);
251248
} else {
252249
let actual = got.unwrap();
@@ -308,17 +305,16 @@ mod test {
308305

309306
if let Some(err) = want_error {
310307
let got_err = got.err().unwrap();
311-
assert!(
312-
err.equal(&got_err),
308+
assert_eq!(
309+
err, got_err,
313310
"Unmarshal {} rr: err = {:?}, want {:?}",
314-
name,
315-
got_err,
316-
err,
311+
name, got_err, err,
317312
);
318313
} else {
319314
let data = got.ok().unwrap();
320315
let buf = &mut data.clone();
321-
let actual = Header::unmarshal(buf).expect(format!("Unmarshal {}", name).as_str());
316+
let actual =
317+
Header::unmarshal(buf).unwrap_or_else(|_| panic!("Unmarshal {}", name));
322318

323319
assert_eq!(
324320
actual, want,

src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
//! // ...
4242
4343
pub mod compound_packet;
44-
pub mod error;
44+
mod error;
4545
pub mod goodbye;
4646
pub mod header;
4747
pub mod packet;
@@ -53,3 +53,5 @@ pub mod sender_report;
5353
pub mod source_description;
5454
pub mod transport_feedbacks;
5555
mod util;
56+
57+
pub use error::Error;

src/packet.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::error::Result;
12
use crate::{
23
compound_packet::*, error::Error, goodbye::*, header::*,
34
payload_feedbacks::full_intra_request::*, payload_feedbacks::picture_loss_indication::*,
@@ -9,7 +10,6 @@ use crate::{
910
};
1011
use util::marshal::{Marshal, Unmarshal};
1112

12-
use anyhow::Result;
1313
use bytes::Buf;
1414
use std::any::Any;
1515
use std::fmt;
@@ -56,10 +56,10 @@ where
5656

5757
match packets.len() {
5858
// Empty Packet
59-
0 => Err(Error::InvalidHeader.into()),
59+
0 => Err(Error::InvalidHeader),
6060

6161
// Single Packet
62-
1 => packets.pop().ok_or_else(|| Error::BadFirstPacket.into()),
62+
1 => packets.pop().ok_or(Error::BadFirstPacket),
6363

6464
// Compound Packet
6565
_ => Ok(Box::new(CompoundPacket(packets))),
@@ -76,7 +76,7 @@ where
7676

7777
let length = (h.length as usize) * 4;
7878
if length > raw_data.remaining() {
79-
return Err(Error::PacketTooShort.into());
79+
return Err(Error::PacketTooShort);
8080
}
8181

8282
let mut in_packet = h.marshal()?.chain(raw_data.take(length));
@@ -201,12 +201,7 @@ mod test {
201201
let result = unmarshal(&mut Bytes::new());
202202
if let Err(got) = result {
203203
let want = Error::InvalidHeader;
204-
assert!(
205-
want.equal(&got),
206-
"Unmarshal(nil) err = {}, want {}",
207-
got,
208-
want
209-
);
204+
assert_eq!(want, got, "Unmarshal(nil) err = {}, want {}", got, want);
210205
} else {
211206
assert!(false, "want error");
212207
}
@@ -225,11 +220,10 @@ mod test {
225220
let result = unmarshal(&mut data);
226221
if let Err(got) = result {
227222
let want = Error::PacketTooShort;
228-
assert!(
229-
want.equal(&got),
223+
assert_eq!(
224+
want, got,
230225
"Unmarshal(invalid_header_length) err = {}, want {}",
231-
got,
232-
want
226+
got, want
233227
);
234228
} else {
235229
assert!(false, "want error");

0 commit comments

Comments
 (0)