8b872979ef
- udev-shim: replace .expect() with graceful errors (no more panic on Broken pipe) - P4-initfs: remove duplicate sessiond (conflicted with config) - accessibility/ime/keymapd: break instead of exit(1) on EBADF - P6 driver patches rebased - Docs: archive old reports, add implementation master plan
43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
mod scheme;
|
|
|
|
use std::io::Write;
|
|
|
|
use scheme::ImeScheme;
|
|
|
|
fn log_msg(level: &str, msg: &str) {
|
|
let _ = writeln!(std::io::stderr(), "[ime] {} {}", level, msg);
|
|
}
|
|
|
|
fn main() {
|
|
let mut scheme = ImeScheme::new();
|
|
|
|
let socket = redox_scheme::Socket::nonblock("ime")
|
|
.expect("ime: failed to register scheme:ime");
|
|
log_msg("INFO", "registered scheme:ime");
|
|
|
|
loop {
|
|
let request = match socket.next_request(redox_scheme::SignalBehavior::Restart) {
|
|
Ok(Some(r)) => r,
|
|
Ok(None) => {
|
|
log_msg("INFO", "scheme unmounted, exiting");
|
|
break;
|
|
}
|
|
Err(e) => {
|
|
log_msg("ERROR", &format!("failed to read request: {}", e));
|
|
break;
|
|
}
|
|
};
|
|
|
|
match request.handle_scheme_block_mut(&mut scheme) {
|
|
Ok(response) => {
|
|
if let Err(e) = socket.write_response(response, redox_scheme::SignalBehavior::Restart) {
|
|
log_msg("ERROR", &format!("failed to write response: {}", e));
|
|
}
|
|
}
|
|
Err(_request) => {
|
|
log_msg("ERROR", "unhandled scheme request");
|
|
}
|
|
}
|
|
}
|
|
}
|