use chunk_io::{ChunkDeserializationError, ChunkSerializationError};
use messages::{MessageDeserializationError, MessageSerializationError};
use sessions::ClientState;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum ClientSessionError {
#[error("An error occurred deserializing incoming data: {0}")]
ChunkDeserializationError(#[from] ChunkDeserializationError),
#[error("An error occurred serializing outbound messages: {0}")]
ChunkSerializationError(#[from] ChunkSerializationError),
#[error(
"An error occurred while attempting to turn an RTMP message into a message payload: {0}"
)]
MessageSerializationError(#[from] MessageSerializationError),
#[error(
"An error occurred while attempting to turn a message payload into an RTMP message: {0}"
)]
MessageDeserializationError(#[from] MessageDeserializationError),
#[error(
"A connection request was attempted while this session is already in a connected state"
)]
CantConnectWhileAlreadyConnected,
#[error(
"The request could not be performed while the session is in the {current_state:?} state"
)]
SessionInInvalidState { current_state: ClientState },
#[error("No known stream id is active to perform publish/playback actions on")]
NoKnownActiveStreamIdWhenRequired,
#[error("An attempt to create a stream on the server failed")]
CreateStreamFailed,
#[error("The server sent a create stream success result without a stream id")]
CreateStreamResponseHadNoStreamNumber,
#[error("The server sent an onStatus message with invalid arguments")]
InvalidOnStatusArguments,
}