Implemented script reloading
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -1242,6 +1242,15 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.9"
|
||||
@@ -1433,6 +1442,7 @@ dependencies = [
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"socket2 0.5.5",
|
||||
"tokio-macros",
|
||||
"windows-sys",
|
||||
|
||||
@@ -13,7 +13,7 @@ anyhow = "1"
|
||||
fern = "0.6.2"
|
||||
log = "0.4.20"
|
||||
structopt = "0.3"
|
||||
tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "rt"] }
|
||||
tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "rt", "signal"] }
|
||||
tokio-util = { version = "0.7.10", features = ["io", "io-util", "rt", "compat"] }
|
||||
mlua = { version = "0.9.1", features = ["luau-jit", "vendored", "async", "send"] }
|
||||
reqwest = { version = "0.11.22", features = ["stream"] }
|
||||
|
||||
12
src/main.rs
12
src/main.rs
@@ -5,6 +5,7 @@ use std::net::{Ipv4Addr, Ipv6Addr};
|
||||
use std::path::{Path, PathBuf};
|
||||
use anyhow::anyhow;
|
||||
use structopt::StructOpt;
|
||||
use tokio::signal::unix::SignalKind;
|
||||
|
||||
mod handler;
|
||||
mod engine;
|
||||
@@ -62,7 +63,16 @@ async fn main() -> anyhow::Result<()> {
|
||||
engine_impl.load_script(opts.script.clone()).await?;
|
||||
|
||||
local_set.spawn_local(engine_impl.run());
|
||||
|
||||
{
|
||||
let engine = engine.clone();
|
||||
let script = opts.script.clone();
|
||||
let mut hup_stream = tokio::signal::unix::signal(SignalKind::hangup())?;
|
||||
local_set.spawn_local(async move {
|
||||
while let Some(_) = hup_stream.recv().await {
|
||||
engine.load_script(script.clone()).await.ok();
|
||||
}
|
||||
});
|
||||
}
|
||||
let handler = handler::Handler::new(
|
||||
engine.clone(),
|
||||
opts.serve.as_ref()
|
||||
|
||||
Reference in New Issue
Block a user