145abfa1fSHarlanC use {
245abfa1fSHarlanC     failure::{Backtrace, Fail},
388325f54SHarlanC     bytesio::bytes_errors::{BytesReadError, BytesWriteError},
445abfa1fSHarlanC     std::fmt,
545abfa1fSHarlanC };
6c2f3fbfaSHarlanC 
7c2f3fbfaSHarlanC #[derive(Debug)]
808c16cccSHarlanC pub struct ControlMessagesError {
908c16cccSHarlanC     pub value: ControlMessagesErrorValue,
1008c16cccSHarlanC }
1108c16cccSHarlanC 
12c2f3fbfaSHarlanC #[derive(Debug, Fail)]
1308c16cccSHarlanC pub enum ControlMessagesErrorValue {
14ee695b48SHarlanC     //Amf0WriteError(Amf0WriteError),
15*69de9bbdSHarlanC     #[fail(display = "bytes write error: {}", _0)]
164ff0d3acSHarlanC     BytesWriteError(BytesWriteError),
1708c16cccSHarlanC }
1808c16cccSHarlanC 
194ff0d3acSHarlanC impl From<BytesWriteError> for ControlMessagesError {
from(error: BytesWriteError) -> Self204ff0d3acSHarlanC     fn from(error: BytesWriteError) -> Self {
2108c16cccSHarlanC         ControlMessagesError {
224ff0d3acSHarlanC             value: ControlMessagesErrorValue::BytesWriteError(error),
2308c16cccSHarlanC         }
2408c16cccSHarlanC     }
2508c16cccSHarlanC }
26ee695b48SHarlanC 
27c2f3fbfaSHarlanC impl fmt::Display for ControlMessagesError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result28c2f3fbfaSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
29c2f3fbfaSHarlanC         fmt::Display::fmt(&self.value, f)
30c2f3fbfaSHarlanC     }
31c2f3fbfaSHarlanC }
32c2f3fbfaSHarlanC 
33c2f3fbfaSHarlanC impl Fail for ControlMessagesError {
cause(&self) -> Option<&dyn Fail>34c2f3fbfaSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
35c2f3fbfaSHarlanC         self.value.cause()
36c2f3fbfaSHarlanC     }
37c2f3fbfaSHarlanC 
backtrace(&self) -> Option<&Backtrace>38c2f3fbfaSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
39c2f3fbfaSHarlanC         self.value.backtrace()
40c2f3fbfaSHarlanC     }
41c2f3fbfaSHarlanC }
42c2f3fbfaSHarlanC 
43c2f3fbfaSHarlanC #[derive(Debug)]
44ee695b48SHarlanC pub struct ProtocolControlMessageReaderError {
458a60cc5aSHarlanC     pub value: ProtocolControlMessageReaderErrorValue,
468a60cc5aSHarlanC }
47ee695b48SHarlanC 
48c2f3fbfaSHarlanC #[derive(Debug, Fail)]
498a60cc5aSHarlanC pub enum ProtocolControlMessageReaderErrorValue {
50*69de9bbdSHarlanC     #[fail(display = "bytes read error: {}", _0)]
514ff0d3acSHarlanC     BytesReadError(BytesReadError),
528a60cc5aSHarlanC }
538a60cc5aSHarlanC 
544ff0d3acSHarlanC impl From<BytesReadError> for ProtocolControlMessageReaderError {
from(error: BytesReadError) -> Self554ff0d3acSHarlanC     fn from(error: BytesReadError) -> Self {
568a60cc5aSHarlanC         ProtocolControlMessageReaderError {
574ff0d3acSHarlanC             value: ProtocolControlMessageReaderErrorValue::BytesReadError(error),
588a60cc5aSHarlanC         }
598a60cc5aSHarlanC     }
60ee695b48SHarlanC }
61c2f3fbfaSHarlanC 
62c2f3fbfaSHarlanC impl fmt::Display for ProtocolControlMessageReaderError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result63c2f3fbfaSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
64c2f3fbfaSHarlanC         fmt::Display::fmt(&self.value, f)
65c2f3fbfaSHarlanC     }
66c2f3fbfaSHarlanC }
67c2f3fbfaSHarlanC 
68c2f3fbfaSHarlanC impl Fail for ProtocolControlMessageReaderError {
cause(&self) -> Option<&dyn Fail>69c2f3fbfaSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
70c2f3fbfaSHarlanC         self.value.cause()
71c2f3fbfaSHarlanC     }
72c2f3fbfaSHarlanC 
backtrace(&self) -> Option<&Backtrace>73c2f3fbfaSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
74c2f3fbfaSHarlanC         self.value.backtrace()
75c2f3fbfaSHarlanC     }
76c2f3fbfaSHarlanC }
77