use crate::coding::{decode_string, encode_string, DecodeError, EncodeError, VarInt};
use crate::coding::{AsyncRead, AsyncWrite};
#[derive(Clone, Debug)]
pub struct Subscribe {
pub id: VarInt,
pub namespace: String,
pub name: String,
}
impl Subscribe {
pub async fn decode<R: AsyncRead>(r: &mut R) -> Result<Self, DecodeError> {
let id = VarInt::decode(r).await?;
let namespace = decode_string(r).await?;
let name = decode_string(r).await?;
Ok(Self { id, namespace, name })
}
}
impl Subscribe {
pub async fn encode<W: AsyncWrite>(&self, w: &mut W) -> Result<(), EncodeError> {
self.id.encode(w).await?;
encode_string(&self.namespace, w).await?;
encode_string(&self.name, w).await?;
Ok(())
}
}