power outage stash

This commit is contained in:
Qyriad 2026-03-22 17:15:04 +01:00
parent 2ecd987be6
commit a9b63f4d58
10 changed files with 332 additions and 62 deletions

View file

@ -3,6 +3,7 @@ use std::{os::fd::RawFd, sync::OnceLock};
use circular_buffer::CircularBuffer;
use iddqd::{BiHashItem, IdOrdItem};
use mio::Token;
use rustix::process::Pid;
use crate::prelude::*;
@ -76,11 +77,11 @@ impl FdInfo {
impl IdOrdItem for FdInfo {
type Key<'a> = &'a RawFd;
iddqd::id_upcast!();
fn key(&self) -> &RawFd {
&self.fd
}
iddqd::id_upcast!();
}
#[derive(Debug)]
@ -105,13 +106,16 @@ impl<'a> Display for FdInfoDisplay<'a> {
}
#[derive(Copy)]
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
#[non_exhaustive]
pub enum FdKind {
File,
Socket,
SockStream,
Poller,
ChildStdout,
ChildStderr,
Pid(Pid),
#[default]
Unknown,
}
@ -124,6 +128,9 @@ impl FdKind {
Socket => "socket",
SockStream => "socket stream",
Poller => "poller",
ChildStdout => "child stdout",
ChildStderr => "child stderr",
Pid(_) => "pidfd",
Unknown => "«unknown»",
}
}
@ -140,6 +147,8 @@ impl BiHashItem for TokenFd {
type K1<'a> = Token;
type K2<'a> = RawFd;
iddqd::bi_upcast!();
fn key1(&self) -> Token {
self.token
}
@ -147,8 +156,6 @@ impl BiHashItem for TokenFd {
fn key2(&self) -> RawFd {
self.fd
}
iddqd::bi_upcast!();
}
impl From<TokenFd> for (Token, RawFd) {