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 ChannelEventSendErr, 37 NoneChannelDataSender, 38 NoneChannelDataReceiver, 39 } 40 41 impl From<Amf0WriteError> for SessionError { 42 fn from(error: Amf0WriteError) -> Self { 43 SessionError { 44 value: SessionErrorValue::Amf0WriteError(error), 45 } 46 } 47 } 48 49 impl From<BytesWriteError> for SessionError { 50 fn from(error: BytesWriteError) -> Self { 51 SessionError { 52 value: SessionErrorValue::BytesWriteError(error), 53 } 54 } 55 } 56 57 impl From<Elapsed> for SessionError { 58 fn from(error: Elapsed) -> Self { 59 SessionError { 60 value: SessionErrorValue::TimeoutError(error), 61 } 62 } 63 } 64 65 impl From<UnpackError> for SessionError { 66 fn from(error: UnpackError) -> Self { 67 SessionError { 68 value: SessionErrorValue::UnPackError(error), 69 } 70 } 71 } 72 73 impl From<MessageError> for SessionError { 74 fn from(error: MessageError) -> Self { 75 SessionError { 76 value: SessionErrorValue::MessageError(error), 77 } 78 } 79 } 80 81 impl From<ControlMessagesError> for SessionError { 82 fn from(error: ControlMessagesError) -> Self { 83 SessionError { 84 value: SessionErrorValue::ControlMessagesError(error), 85 } 86 } 87 } 88 89 impl From<NetConnectionError> for SessionError { 90 fn from(error: NetConnectionError) -> Self { 91 SessionError { 92 value: SessionErrorValue::NetConnectionError(error), 93 } 94 } 95 } 96 97 impl From<NetStreamError> for SessionError { 98 fn from(error: NetStreamError) -> Self { 99 SessionError { 100 value: SessionErrorValue::NetStreamError(error), 101 } 102 } 103 } 104 105 impl From<EventMessagesError> for SessionError { 106 fn from(error: EventMessagesError) -> Self { 107 SessionError { 108 value: SessionErrorValue::EventMessagesError(error), 109 } 110 } 111 } 112 113 impl From<NetIOError> for SessionError { 114 fn from(error: NetIOError) -> Self { 115 SessionError { 116 value: SessionErrorValue::NetIOError(error), 117 } 118 } 119 } 120 121 impl From<PackError> for SessionError { 122 fn from(error: PackError) -> Self { 123 SessionError { 124 value: SessionErrorValue::PackError(error), 125 } 126 } 127 } 128 129 impl From<HandshakeError> for SessionError { 130 fn from(error: HandshakeError) -> Self { 131 SessionError { 132 value: SessionErrorValue::HandshakeError(error), 133 } 134 } 135 } 136