usbscsid: replace .unwrap() in runtime with explicit error handling
Two runtime .unwrap() calls in the event loop are replaced with explicit error logging and process::exit(1): 1. event::EventQueue::new() — fail to create event queue 2. event_queue.subscribe() — fail to subscribe to scheme events Previously these panicked the daemon if the event subsystem was unavailable. Now they log a clear error and exit gracefully. Resolves IMPROVEMENT-PLAN §3.6: 'usbscsid: Fix .expect() in runtime'.
This commit is contained in:
@@ -2,6 +2,7 @@ use std::collections::BTreeMap;
|
||||
use std::env;
|
||||
|
||||
use driver_block::{Disk, DiskScheme, ExecutorTrait};
|
||||
use log::error;
|
||||
use syscall::{Error, EIO};
|
||||
use xhcid_interface::{ConfigureEndpointsReq, PortId, XhciClientHandle};
|
||||
|
||||
@@ -107,7 +108,13 @@ fn daemon(daemon: daemon::Daemon) -> ! {
|
||||
println!("DISK CONTENT: {}", base64::encode(&buffer[..]));
|
||||
}
|
||||
|
||||
let event_queue = event::EventQueue::new().unwrap();
|
||||
let event_queue = match event::EventQueue::new() {
|
||||
Ok(q) => q,
|
||||
Err(e) => {
|
||||
error!("usbscsid: failed to create event queue: {e}");
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
event::user_data! {
|
||||
enum Event {
|
||||
@@ -133,13 +140,14 @@ fn daemon(daemon: daemon::Daemon) -> ! {
|
||||
|
||||
//libredox::call::setrens(0, 0).expect("nvmed: failed to enter null namespace");
|
||||
|
||||
event_queue
|
||||
.subscribe(
|
||||
scheme.event_handle().raw(),
|
||||
Event::Scheme,
|
||||
event::EventFlags::READ,
|
||||
)
|
||||
.unwrap();
|
||||
if let Err(e) = event_queue.subscribe(
|
||||
scheme.event_handle().raw(),
|
||||
Event::Scheme,
|
||||
event::EventFlags::READ,
|
||||
) {
|
||||
error!("usbscsid: failed to subscribe to events: {e}");
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
for event in event_queue {
|
||||
let event = match event {
|
||||
|
||||
Reference in New Issue
Block a user