implemented TcpListener
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Jake Hillion 2022-04-08 12:58:36 +01:00 committed by Gitea
parent 4b99b46810
commit bb14e64e88
2 changed files with 11 additions and 2 deletions

View File

@ -9,6 +9,7 @@ use std::collections::HashMap;
use std::ffi::CString;
use std::fs::File;
use std::io::Read;
use std::net::TcpListener;
use std::os::unix::io::IntoRawFd;
use std::path::PathBuf;
@ -192,7 +193,14 @@ impl<'a> Spawner<'a> {
Arg::Pipe(p) => Err(Error::BadPipe(p.get_name().to_string())),
Arg::Trigger => Ok(trigger.args()),
Arg::TcpListener { port: _port } => unimplemented!(),
Arg::TcpListener { addr } => {
let listener = TcpListener::bind(addr)?;
let listener = listener.into_raw_fd();
Ok(vec![CString::new(listener.to_string()).unwrap()])
}
Arg::Trailing => Ok(self
.trailing
.iter()

View File

@ -3,6 +3,7 @@ use log::debug;
use crate::{Error, Result};
use std::collections::{HashMap, HashSet};
use std::net::SocketAddr;
use std::path::PathBuf;
use ipnetwork::{Ipv4Network, Ipv6Network};
@ -51,7 +52,7 @@ pub enum Arg {
Trigger,
/// A TCP Listener
TcpListener { port: u16 },
TcpListener { addr: SocketAddr },
/// The rest of argv[1..], 0 or more arguments
Trailing,