1 use crate::amf0::errors::Amf0WriteError; 2 3 use failure::{Backtrace, Fail}; 4 use std::fmt; 5 6 #[derive(Debug)] 7 pub struct NetStreamError { 8 pub value: NetStreamErrorValue, 9 } 10 11 #[derive(Debug, Fail)] 12 pub enum NetStreamErrorValue { 13 #[fail(display = "amf0 write error: {}", _0)] 14 Amf0WriteError(Amf0WriteError), 15 #[fail(display = "invalid max chunk size")] 16 InvalidMaxChunkSize { chunk_size: usize }, 17 } 18 19 impl From<Amf0WriteError> for NetStreamError { 20 fn from(error: Amf0WriteError) -> Self { 21 NetStreamError { 22 value: NetStreamErrorValue::Amf0WriteError(error), 23 } 24 } 25 } 26 27 impl fmt::Display for NetStreamError { 28 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 29 fmt::Display::fmt(&self.value, f) 30 } 31 } 32 33 impl Fail for NetStreamError { 34 fn cause(&self) -> Option<&dyn Fail> { 35 self.value.cause() 36 } 37 38 fn backtrace(&self) -> Option<&Backtrace> { 39 self.value.backtrace() 40 } 41 } 42