Skip to main content

rl_lang/interpreter/stdlib/net/
tcp_connect.rs

1use std::net::TcpStream;
2
3use crate::interpreter::{
4    evaluator::Evaluator,
5    stdlib::{
6        common::{extract_string, verr, vi, vok, vs},
7        net::{NetHandle, common::insert_handle},
8    },
9    values::Value,
10};
11
12pub fn func(eval: &mut Evaluator, address: Value) -> Value {
13    let addr = match extract_string(address, "tcp_connect") {
14        Ok(s) => s,
15        Err(e) => return verr!(vs!(format!("tcp_connect: {} ", e))),
16    };
17    match TcpStream::connect(&addr) {
18        Ok(stream) => {
19            let id = insert_handle(eval, NetHandle::TcpStream(stream));
20            vok!(vi!(id))
21        }
22        Err(e) => verr!(vs!(format!("tcp_connect(\"{}\"): {}", addr, e))),
23    }
24}