41 lines
952 B
Rust
41 lines
952 B
Rust
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<DurationSeconds> for Duration {
|
|
fn from(value: DurationSeconds) -> Self {
|
|
Self::from_secs(value.0)
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct Ipv4SocketAddr<const PORT: u16>(Ipv4Addr);
|
|
|
|
impl<const PORT: u16> From<Ipv4SocketAddr<PORT>> for SocketAddr {
|
|
fn from(ip: Ipv4SocketAddr<PORT>) -> 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<Self> {
|
|
Ok(TxHelper(mlua::FromLua::from_lua(value, lua)?))
|
|
}
|
|
}
|
|
|
|
impl From<TxHelper> for event::Sender {
|
|
fn from(value: TxHelper) -> Self {
|
|
value.0.get_tx()
|
|
}
|
|
}
|