1 use crate::amf0::errors::Amf0WriteError; 2 use crate::chunk::errors::PackError; 3 use crate::chunk::errors::UnpackError; 4 use crate::handshake::errors::HandshakeError; 5 use crate::messages::errors::MessageError; 6 use crate::netconnection::errors::NetConnectionError; 7 use crate::netstream::errors::NetStreamError; 8 use crate::protocol_control_messages::errors::ControlMessagesError; 9 use crate::user_control_messages::errors::EventMessagesError; 10 11 use netio::bytes_errors::BytesWriteError; 12 use netio::netio_errors::NetIOError; 13 14 use tokio::time::Elapsed; 15 16 pub struct SessionError { 17 pub value: SessionErrorValue, 18 } 19 20 pub enum SessionErrorValue { 21 Amf0WriteError(Amf0WriteError), 22 BytesWriteError(BytesWriteError), 23 TimeoutError(Elapsed), 24 UnPackError(UnpackError), 25 MessageError(MessageError), 26 ControlMessagesError(ControlMessagesError), 27 NetConnectionError(NetConnectionError), 28 NetStreamError(NetStreamError), 29 EventMessagesError(EventMessagesError), 30 NetIOError(NetIOError), 31 PackError(PackError), 32 HandshakeError(HandshakeError), 33 34 Amf0ValueCountNotCorrect, 35 Amf0ValueTypeNotCorrect, 36 } 37 38 impl From<Amf0WriteError> for SessionError { 39 fn from(error: Amf0WriteError) -> Self { 40 SessionError { 41 value: SessionErrorValue::Amf0WriteError(error), 42 } 43 } 44 } 45 46 impl From<BytesWriteError> for SessionError { 47 fn from(error: BytesWriteError) -> Self { 48 SessionError { 49 value: SessionErrorValue::BytesWriteError(error), 50 } 51 } 52 } 53 54 impl From<Elapsed> for SessionError { 55 fn from(error: Elapsed) -> Self { 56 SessionError { 57 value: SessionErrorValue::TimeoutError(error), 58 } 59 } 60 } 61 62 impl From<UnpackError> for SessionError { 63 fn from(error: UnpackError) -> Self { 64 SessionError { 65 value: SessionErrorValue::UnPackError(error), 66 } 67 } 68 } 69 70 impl From<MessageError> for SessionError { 71 fn from(error: MessageError) -> Self { 72 SessionError { 73 value: SessionErrorValue::MessageError(error), 74 } 75 } 76 } 77 78 impl From<ControlMessagesError> for SessionError { 79 fn from(error: ControlMessagesError) -> Self { 80 SessionError { 81 value: SessionErrorValue::ControlMessagesError(error), 82 } 83 } 84 } 85 86 impl From<NetConnectionError> for SessionError { 87 fn from(error: NetConnectionError) -> Self { 88 SessionError { 89 value: SessionErrorValue::NetConnectionError(error), 90 } 91 } 92 } 93 94 impl From<NetStreamError> for SessionError { 95 fn from(error: NetStreamError) -> Self { 96 SessionError { 97 value: SessionErrorValue::NetStreamError(error), 98 } 99 } 100 } 101 102 impl From<EventMessagesError> for SessionError { 103 fn from(error: EventMessagesError) -> Self { 104 SessionError { 105 value: SessionErrorValue::EventMessagesError(error), 106 } 107 } 108 } 109 110 impl From<NetIOError> for SessionError { 111 fn from(error: NetIOError) -> Self { 112 SessionError { 113 value: SessionErrorValue::NetIOError(error), 114 } 115 } 116 } 117 118 impl From<PackError> for SessionError { 119 fn from(error: PackError) -> Self { 120 SessionError { 121 value: SessionErrorValue::PackError(error), 122 } 123 } 124 } 125 126 impl From<HandshakeError> for SessionError { 127 fn from(error: HandshakeError) -> Self { 128 SessionError { 129 value: SessionErrorValue::HandshakeError(error), 130 } 131 } 132 } 133