rl_lang/interpreter/stdlib/net/
udp_close.rs1use crate::interpreter::{
2 evaluator::Evaluator,
3 stdlib::{
4 common::{extract_number, verr, vnl, vok, vs},
5 net::NetHandle,
6 },
7 values::Value,
8};
9
10pub fn func(eval: &mut Evaluator, id: Value) -> Value {
11 let id = match extract_number(id, "udp_close") {
12 Ok(a) if a as i64 >= 0 => a as i64,
13 Ok(_) => return verr!(vs!("udp_close: id handle cannot be negative".to_string())),
14 Err(e) => return verr!(vs!(format!("udp_close: {}", e))),
15 };
16 match eval.net_handles.get(&id) {
17 Some(NetHandle::UdpSocket(_)) => {
18 eval.net_handles.remove(&id);
19 vok!(vnl!())
20 }
21 Some(_) => verr!(vs!(format!("udp_close: handle {} is not a UDP socket", id))),
22 None => verr!(vs!(format!("udp_close: unknown handle {}", id))),
23 }
24}