1 use { 2 crate::{amf0::errors::Amf0WriteError, chunk::errors::PackError}, 3 failure::Fail, 4 xflv::errors::FlvDemuxerError, 5 std::fmt, 6 }; 7 8 #[derive(Debug, Fail)] 9 pub enum CacheErrorValue { 10 #[fail(display = "cache tag parse error\n")] 11 DemuxerError(FlvDemuxerError), 12 #[fail(display = "pack error\n")] 13 PackError(PackError), 14 } 15 16 impl fmt::Display for CacheError { 17 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 18 fmt::Display::fmt(&self.value, f) 19 } 20 } 21 #[derive(Debug)] 22 pub struct CacheError { 23 pub value: CacheErrorValue, 24 } 25 26 impl From<FlvDemuxerError> for CacheError { 27 fn from(error: FlvDemuxerError) -> Self { 28 CacheError { 29 value: CacheErrorValue::DemuxerError(error), 30 } 31 } 32 } 33 34 impl From<PackError> for CacheError { 35 fn from(error: PackError) -> Self { 36 CacheError { 37 value: CacheErrorValue::PackError(error), 38 } 39 } 40 } 41 42 #[derive(Debug, Fail)] 43 pub enum MetadataErrorValue { 44 #[fail(display = "metadata tag parse error\n")] 45 DemuxerError(FlvDemuxerError), 46 #[fail(display = "pack error\n")] 47 PackError(PackError), 48 #[fail(display = "amf write error\n")] 49 Amf0WriteError(Amf0WriteError), 50 } 51 #[derive(Debug)] 52 pub struct MetadataError { 53 pub value: MetadataErrorValue, 54 } 55 56 impl From<Amf0WriteError> for MetadataError { 57 fn from(error: Amf0WriteError) -> Self { 58 MetadataError { 59 value: MetadataErrorValue::Amf0WriteError(error), 60 } 61 } 62 } 63