Compile on windows

This commit is contained in:
John Doty 2022-10-08 21:38:01 -07:00
parent 3157ff3cbb
commit 2faed6267e
3 changed files with 32 additions and 4 deletions

View file

@ -7,5 +7,7 @@ edition = "2021"
[dependencies]
bytes = "1"
procfs = "0.14.1"
tokio = { version = "1", features = ["full"] }
[target.'cfg(target_os="linux")'.dependencies]
procfs = "0.14.1"

View file

@ -22,6 +22,8 @@ pub enum Error {
MessageUnknown,
MessageCorrupt,
ConnectionReset,
ProcFs(String),
NotSupported,
}
impl PartialEq for Error {
@ -56,6 +58,14 @@ impl PartialEq for Error {
ConnectionReset => true,
_ => false,
},
ProcFs(a) => match other {
ProcFs(b) => a == b,
_ => false,
},
NotSupported => match other {
NotSupported => true,
_ => false,
},
}
}
}

View file

@ -1,8 +1,24 @@
use crate::message::PortDesc;
use procfs::process::FDTarget;
use std::collections::HashMap;
use crate::Error;
#[cfg(not(target_os = "linux"))]
pub fn get_entries() -> Result<Vec<PortDesc>, Error> {
Err(Error::NotSupported)
}
#[cfg(target_os = "linux")]
pub fn get_entries() -> Result<Vec<PortDesc>, Error> {
match get_entries_linux() {
Ok(v) => Ok(v),
Err(e) => Err(Error::ProcFs(format!("{:?}", e))),
}
}
#[cfg(target_os = "linux")]
pub fn get_entries_linux() -> procfs::ProcResult<Vec<PortDesc>> {
use procfs::process::FDTarget;
use std::collections::HashMap;
pub fn get_entries() -> procfs::ProcResult<Vec<PortDesc>> {
let all_procs = procfs::process::all_processes()?;
// build up a map between socket inodes and process stat info. Ignore any