async_mpd/client/resp/
mod.rs1use crate::client::resp::respmap_handlers::{ListallResponse, ListallinfoResponse};
2use crate::protocol::Stats;
3use crate::{protocol, DatabaseVersion, Error, Status, Subsystem, Track};
4use async_net::TcpStream;
5use futures_lite::io::BufReader;
6use futures_lite::AsyncBufReadExt;
7
8pub mod handlers;
9pub mod respmap;
10pub mod respmap_handlers;
11
12pub(crate) async fn read_resp_line(reader: &mut BufReader<TcpStream>) -> Result<String, Error> {
14 let mut line = String::new();
15 reader.read_line(&mut line).await?;
16 Ok(line.trim().to_string())
17}
18
19pub enum WrappedResponse {
21 Ok,
22 ListAllInfo(ListallinfoResponse),
23 Tracks(Vec<Track>),
24 Listall(ListallResponse),
25 Subsystem(Subsystem),
26 DatabaseVersion(DatabaseVersion),
27 Status(Status),
28 Stats(Stats),
29}
30
31impl From<()> for WrappedResponse {
32 fn from(_: ()) -> Self {
33 WrappedResponse::Ok
34 }
35}
36
37impl From<ListallinfoResponse> for WrappedResponse {
38 fn from(l: ListallinfoResponse) -> Self {
39 WrappedResponse::ListAllInfo(l)
40 }
41}
42
43impl From<Vec<protocol::Track>> for WrappedResponse {
44 fn from(t: Vec<Track>) -> Self {
45 WrappedResponse::Tracks(t)
46 }
47}
48
49impl From<ListallResponse> for WrappedResponse {
50 fn from(l: ListallResponse) -> Self {
51 WrappedResponse::Listall(l)
52 }
53}
54
55impl From<protocol::Subsystem> for WrappedResponse {
56 fn from(s: Subsystem) -> Self {
57 WrappedResponse::Subsystem(s)
58 }
59}
60
61impl From<protocol::DatabaseVersion> for WrappedResponse {
62 fn from(d: DatabaseVersion) -> Self {
63 WrappedResponse::DatabaseVersion(d)
64 }
65}
66
67impl From<protocol::Status> for WrappedResponse {
68 fn from(s: Status) -> Self {
69 WrappedResponse::Status(s)
70 }
71}
72
73impl From<protocol::Stats> for WrappedResponse {
74 fn from(s: Stats) -> Self {
75 WrappedResponse::Stats(s)
76 }
77}