use std::io;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("frame too large: {0} bytes (limit {limit})", limit = MAX_FRAME_SIZE)]
FrameTooLarge(usize),
#[error("invalid frame: {0}")]
InvalidFrame(String),
#[error("decode error: {0}")]
Decode(#[from] rmp_serde::decode::Error),
#[error("encode error: {0}")]
Encode(#[from] rmp_serde::encode::Error),
#[error("io error: {0}")]
Io(#[from] io::Error),
}
pub const MAX_FRAME_SIZE: usize = 16 * 1024 * 1024;
pub type Result<T> = std::result::Result<T, Error>;