scanner: make plugin interface ffi-safe with handle-based registry

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8e4790db3cc29f84f4e0d7d8eff36c2c6a6a6964
This commit is contained in:
raf 2026-02-18 22:49:12 +03:00
commit f4961c7f95
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
9 changed files with 93 additions and 44 deletions

View file

@ -5,9 +5,9 @@ use std::time::Duration;
struct ProcScanner;
#[unsafe(no_mangle)]
pub extern "C" fn pscand_scanner() -> Box<dyn Scanner> {
Box::new(ProcScanner)
#[no_mangle]
pub extern "C" fn pscand_scanner() -> *mut std::os::raw::c_void {
Box::into_raw(Box::new(ProcScanner)) as *mut std::os::raw::c_void
}
impl Default for ProcScanner {
@ -72,7 +72,7 @@ impl Scanner for ProcScanner {
}
metrics.insert(
"zombie_processes".to_string(),
MetricValue::from_str(zombie_info.join(",")),
MetricValue::from_string(zombie_info.join(",")),
);
}
}
@ -81,7 +81,7 @@ impl Scanner for ProcScanner {
for (i, proc) in top_mem.iter().enumerate() {
metrics.insert(
format!("top_mem_{}_name", i + 1),
MetricValue::from_str(&proc.name),
MetricValue::from_string(&proc.name),
);
metrics.insert(
format!("top_mem_{}_mb", i + 1),