rktk_rrp/
client.rs

1//! rrp client. uses std.
2
3use core::fmt::Display;
4
5use crate::transport::{ReadTransport, TransportError, WriteTransport};
6
7/// Client to make requests to the rrp server.
8pub struct Client<RT: ReadTransport + Unpin, WT: WriteTransport + Unpin> {
9    pub(crate) reader: RT,
10    pub(crate) writer: WT,
11}
12
13impl<RT: ReadTransport + Unpin, WT: WriteTransport + Unpin> Client<RT, WT> {
14    pub fn new(reader: RT, writer: WT) -> Self {
15        Self { reader, writer }
16    }
17}
18
19#[derive(Debug, thiserror::Error)]
20pub enum ClientError<RE: Display, WE: Display> {
21    #[error(transparent)]
22    Transport(#[from] TransportError<RE, WE>),
23    #[error("failed: status={status}, message={message}")]
24    Failed { status: u8, message: String },
25}