diff --git a/src/apps/chat.rs b/src/apps/chat.rs index 53e1b2b..1d381f1 100644 --- a/src/apps/chat.rs +++ b/src/apps/chat.rs @@ -149,9 +149,6 @@ impl App for ChatApp { if msg_id > msgs.next { return (HttpResCode::BadRequest, "", &[]); } - if msg_id < msgs.next.saturating_sub(MEMORY_SIZE as u16 + 1) { - return (HttpResCode::NoContent, "", &[]); - } self.res_buf.clear(); unwrap(write!(&mut self.res_buf, "
", + msg.author, msg.content + )) + .await + } + None => { + if load.is_some() { + if (msg_id as isize) + == (msgs.next as isize - MEMORY_SIZE as isize - 1) + { + unwrap(write!( + &mut self.res_buf, + ">Older messages forgotten" + )) + .await; + } else { + unwrap(write!( + &mut self.res_buf, + " style=\"display: none;\">" + )) + .await; + } + } else { + return (HttpResCode::NoContent, "", &[]); + } + } }; - unwrap(write!( - &mut self.res_buf, - ">{}: {}", - msg.author, msg.content - )) - .await; }; return (HttpResCode::Ok, "html", &self.res_buf); @@ -222,6 +238,9 @@ impl Messages { } } fn get_abs(&self, id: u16) -> Option<&Message> { + if (id as isize) < (self.next as isize - MEMORY_SIZE as isize) { + return None; + } self.inner.get_signed((id as isize) - (self.next as isize)) } fn push(&mut self, msg: Message) { diff --git a/src/main.rs b/src/main.rs index 0c9e260..c11654a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -172,7 +172,9 @@ async fn main(spawner: Spawner) { unwrap(spawner.spawn(socket::index_listen_task(stack, 80))).await; unwrap(spawner.spawn(socket::ttt_listen_task(stack, apps::ttt::Team::Zero, 8080))).await; unwrap(spawner.spawn(socket::ttt_listen_task(stack, apps::ttt::Team::One, 8081))).await; - unwrap(spawner.spawn(socket::chat_listen_task(stack, 8082))).await; + for _ in 0..2 { + unwrap(spawner.spawn(socket::chat_listen_task(stack, 8082))).await; + } } #[cfg(feature = "wifi-connect")] diff --git a/src/socket.rs b/src/socket.rs index a6d1f91..1601c4f 100644 --- a/src/socket.rs +++ b/src/socket.rs @@ -18,7 +18,7 @@ pub async fn index_listen_task(stack: embassy_net::Stack<'static>, port: u16) { listen_task(stack, IndexApp, port).await } -#[embassy_executor::task(pool_size = 1)] +#[embassy_executor::task(pool_size = 2)] pub async fn chat_listen_task(stack: embassy_net::Stack<'static>, port: u16) { listen_task(stack, chat::ChatApp::new(), port).await }