tcplane/server/response/
impl.rs1use 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}