feat(lua): add timeout function
This commit is contained in:
parent
823a63e93d
commit
571581767e
@ -7,11 +7,12 @@ pub mod logging;
|
|||||||
pub mod nochatreports;
|
pub mod nochatreports;
|
||||||
pub mod player;
|
pub mod player;
|
||||||
pub mod system;
|
pub mod system;
|
||||||
|
pub mod thread;
|
||||||
pub mod vec3;
|
pub mod vec3;
|
||||||
|
|
||||||
use crate::{ListenerMap, build_info::built};
|
use crate::{ListenerMap, build_info::built};
|
||||||
use mlua::{Lua, Table};
|
use mlua::{Lua, Table};
|
||||||
use std::{io, time::Duration};
|
use std::io;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
@ -33,19 +34,12 @@ pub fn register_globals(
|
|||||||
globals.set("GIT_COMMIT_HASH", built::GIT_COMMIT_HASH)?;
|
globals.set("GIT_COMMIT_HASH", built::GIT_COMMIT_HASH)?;
|
||||||
globals.set("GIT_COMMIT_HASH_SHORT", built::GIT_COMMIT_HASH_SHORT)?;
|
globals.set("GIT_COMMIT_HASH_SHORT", built::GIT_COMMIT_HASH_SHORT)?;
|
||||||
|
|
||||||
globals.set(
|
|
||||||
"sleep",
|
|
||||||
lua.create_async_function(async |_, duration: u64| {
|
|
||||||
tokio::time::sleep(Duration::from_millis(duration)).await;
|
|
||||||
Ok(())
|
|
||||||
})?,
|
|
||||||
)?;
|
|
||||||
|
|
||||||
block::register_globals(lua, globals)?;
|
block::register_globals(lua, globals)?;
|
||||||
events::register_globals(lua, globals, event_listeners)?;
|
events::register_globals(lua, globals, event_listeners)?;
|
||||||
logging::register_globals(lua, globals)?;
|
logging::register_globals(lua, globals)?;
|
||||||
nochatreports::register_globals(lua, globals)?;
|
nochatreports::register_globals(lua, globals)?;
|
||||||
system::register_globals(lua, globals)
|
system::register_globals(lua, globals)?;
|
||||||
|
thread::register_globals(lua, globals)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reload(lua: &Lua, sender: Option<String>) -> Result<(), Error> {
|
pub fn reload(lua: &Lua, sender: Option<String>) -> Result<(), Error> {
|
||||||
|
27
src/lua/thread.rs
Normal file
27
src/lua/thread.rs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
use mlua::{Error, Function, Lua, Result, Table};
|
||||||
|
use std::time::Duration;
|
||||||
|
use tokio::time::{sleep, timeout};
|
||||||
|
|
||||||
|
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
||||||
|
globals.set(
|
||||||
|
"sleep",
|
||||||
|
lua.create_async_function(async |_, duration: u64| {
|
||||||
|
sleep(Duration::from_millis(duration)).await;
|
||||||
|
Ok(())
|
||||||
|
})?,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
globals.set(
|
||||||
|
"timeout",
|
||||||
|
lua.create_async_function(async |_, (duration, function): (u64, Function)| {
|
||||||
|
timeout(
|
||||||
|
Duration::from_millis(duration),
|
||||||
|
function.call_async::<()>(()),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.map_err(Error::external)
|
||||||
|
})?,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user