use std::net::{Ipv4Addr, SocketAddr}; use std::time::Duration; use mlua::FromLua; use serde::Deserialize; use crate::event::{self, EventChannel}; #[derive(Debug, Deserialize)] pub struct DurationSeconds(u64); impl From for Duration { fn from(value: DurationSeconds) -> Self { Self::from_secs(value.0) } } #[derive(Debug, Deserialize)] pub struct Ipv4SocketAddr(Ipv4Addr); impl From> for SocketAddr { fn from(ip: Ipv4SocketAddr) -> Self { Self::from((ip.0, PORT)) } } #[derive(Debug, Clone)] pub struct TxHelper(EventChannel); impl<'lua> FromLua<'lua> for TxHelper { fn from_lua(value: mlua::Value<'lua>, lua: &'lua mlua::Lua) -> mlua::Result { Ok(TxHelper(mlua::FromLua::from_lua(value, lua)?)) } } impl From for event::Sender { fn from(value: TxHelper) -> Self { value.0.get_tx() } }