Files
empidee/src/response.rs
2025-12-08 05:31:43 +09:00

46 lines
1.2 KiB
Rust

use std::fmt::Display;
use serde::{Deserialize, Serialize};
use thiserror::Error;
// See https://github.com/MusicPlayerDaemon/MPD/blob/7774c3369e1484dc5dec6d7d9572e0a57e9c5302/src/command/AllCommands.cxx#L67-L209
pub type Response = Result<(), MpdError>;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ErrorCode {
// NOTE: seemingly unused
NotList = 1,
Arg = 2,
// NOTE: only used for 'password' command
Password = 3,
Permission = 4,
// NOTE: Catchall error
Unknown = 5,
NoExist = 50,
PlaylistMax = 51,
System = 52,
PlaylistLoad = 53,
UpdateAlready = 54,
PlayerSync = 55,
Exist = 56,
}
#[derive(Error, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MpdError {
code: ErrorCode,
command: String,
message: String,
command_list_num: usize,
}
impl Display for MpdError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"MPD Error (code: {:?}, command: '{}', message: '{}', command_list_num: {})",
self.code, self.command, self.message, self.command_list_num
)
}
}