tcplane/server/response/
impl.rs

1use super::error::Error;
2use crate::*;
3
4impl Default for Response {
5    #[inline]
6    fn default() -> Self {
7        Self { data: Vec::new() }
8    }
9}
10
11impl Response {
12    #[inline]
13    pub async fn send(&mut self, stream_lock: &ArcRwLockStream) -> ResponseResult {
14        let mut stream: RwLockWriteGuard<'_, TcpStream> = stream_lock.get_write_lock().await;
15        let send_res: Result<Vec<u8>, Error> = stream
16            .write_all(&self.get_data())
17            .await
18            .map_err(|err| Error::ResponseError(err.to_string()))
19            .and_then(|_| Ok(self.get_data()))
20            .cloned();
21        let _ = stream.flush().await;
22        send_res
23    }
24
25    #[inline]
26    pub fn set_data<T: Into<ResponseData>>(&mut self, data: T) -> &mut Self {
27        self.data = data.into();
28        self
29    }
30}