Implemented to_stream for site info instead of shared site info

This commit is contained in:
p11 2025-05-31 14:53:22 +02:00
parent 7722a5ee95
commit 9016a32b59

View File

@ -178,13 +178,10 @@ fn fail(mut stream: TcpStream) {
let _ = writeln!(stream, "Page not found!"); let _ = writeln!(stream, "Page not found!");
} }
impl<S: SizeSettings> ToStream<S> for SharedSiteInfo { impl<S: SizeSettings> ToStream<S> for SiteInfo {
fn to_stream<W: Write>(&self, stream: &mut W) -> Result<()> { fn to_stream<W: Write>(&self, stream: &mut W) -> Result<()> {
let Ok(comments) = self.comments.lock() else { S::size_to_stream(self.comments.len(), stream)?;
return Err(std::io::ErrorKind::ResourceBusy.into()); for Comment { name, text } in &self.comments {
};
S::size_to_stream(comments.len(), stream)?;
for Comment { name, text } in comments.iter() {
let name_bytes = name.as_bytes(); let name_bytes = name.as_bytes();
S::size_to_stream(name_bytes.len(), stream)?; S::size_to_stream(name_bytes.len(), stream)?;
stream.write_all(name_bytes)?; stream.write_all(name_bytes)?;
@ -194,9 +191,9 @@ impl<S: SizeSettings> ToStream<S> for SharedSiteInfo {
stream.write_all(text_bytes)?; stream.write_all(text_bytes)?;
} }
S::size_to_stream(self.visits.load(Ordering::Acquire), stream)?; S::size_to_stream(self.visits, stream)?;
S::size_to_stream(self.up.load(Ordering::Acquire), stream)?; S::size_to_stream(self.up, stream)?;
S::size_to_stream(self.down.load(Ordering::Acquire), stream)?; S::size_to_stream(self.down, stream)?;
Ok(()) Ok(())
} }
@ -597,19 +594,21 @@ fn handle_relative_connection(
progress, progress,
} = RequestData::parse(body); } = RequestData::parse(body);
let info = info.update(name, text, up, down);
if let Ok(mut file) = File::create(file_paths.data) {
if to_stream::<PortableSettings, _, _>(&info, &mut file).is_err() {
eprintln!("Error saving data!");
eprintln!();
}
}
let SiteInfo { let SiteInfo {
comments, comments,
visits, visits,
up, up,
down, down,
} = info.update(name, text, up, down); } = info;
if let Ok(mut file) = File::create(file_paths.data) {
if to_stream::<PortableSettings, _, _>(&*info, &mut file).is_err() {
eprintln!("Error saving data!");
eprintln!();
}
}
let _ = write!(stream, "HTTP/1.1 200 OK\r\n"); let _ = write!(stream, "HTTP/1.1 200 OK\r\n");
let _ = write!(stream, "Content-Type: text/html; charset=\"utf-8\"\r\n"); let _ = write!(stream, "Content-Type: text/html; charset=\"utf-8\"\r\n");