extracted serve fn
This commit is contained in:
parent
1f4a5a2c9b
commit
42eff1af2b
1 changed files with 12 additions and 6 deletions
|
@ -7,11 +7,9 @@ use axum::{
|
||||||
use anyhow::{Error, Ok, Context};
|
use anyhow::{Error, Ok, Context};
|
||||||
use blocks::World;
|
use blocks::World;
|
||||||
use rstar::{self, AABB};
|
use rstar::{self, AABB};
|
||||||
use rustmatica::{BlockState};
|
|
||||||
|
|
||||||
mod names;
|
mod names;
|
||||||
use names::Name;
|
use names::Name;
|
||||||
use serde_json::Value;
|
|
||||||
use tokio::{sync::{Mutex, RwLock, watch}, signal};
|
use tokio::{sync::{Mutex, RwLock, watch}, signal};
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Serialize, Deserialize};
|
||||||
use const_format::formatcp;
|
use const_format::formatcp;
|
||||||
|
@ -108,7 +106,7 @@ async fn main() -> Result<(), Error> {
|
||||||
|
|
||||||
let state = SharedControl::new(RwLock::new(state));
|
let state = SharedControl::new(RwLock::new(state));
|
||||||
|
|
||||||
let serv = Router::new()
|
let server = Router::new()
|
||||||
.route("/turtle/new", post(create_turtle))
|
.route("/turtle/new", post(create_turtle))
|
||||||
.route("/turtle/:id/update", post(command))
|
.route("/turtle/:id/update", post(command))
|
||||||
.route("/turtle/client.lua", get(client))
|
.route("/turtle/client.lua", get(client))
|
||||||
|
@ -118,12 +116,20 @@ async fn main() -> Result<(), Error> {
|
||||||
.route("/flush", get(flush))
|
.route("/flush", get(flush))
|
||||||
.with_state(state.clone());
|
.with_state(state.clone());
|
||||||
|
|
||||||
|
serve(server).await;
|
||||||
|
|
||||||
|
write_to_disk(state).await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn serve(serv: Router) {
|
||||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:48228").await.unwrap();
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:48228").await.unwrap();
|
||||||
|
|
||||||
let (close_tx, close_rx) = watch::channel(());
|
let (close_tx, close_rx) = watch::channel(());
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let (socket, remote_addr) = tokio::select! {
|
let (socket, _) = tokio::select! {
|
||||||
result = listener.accept() => {
|
result = listener.accept() => {
|
||||||
result.unwrap()
|
result.unwrap()
|
||||||
}
|
}
|
||||||
|
@ -167,9 +173,9 @@ async fn main() -> Result<(), Error> {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
write_to_disk(state).await?;
|
drop(listener);
|
||||||
|
|
||||||
Ok(())
|
close_tx.closed().await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn write_to_disk(state: SharedControl) -> anyhow::Result<()> {
|
async fn write_to_disk(state: SharedControl) -> anyhow::Result<()> {
|
||||||
|
|
Loading…
Reference in a new issue