2021-06-15 04:44:31 +03:00
|
|
|
module notify
|
|
|
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
// Backends should provide a `new() ?FdNotifier` function
|
|
|
|
pub interface FdNotifier {
|
2021-10-11 15:41:31 +03:00
|
|
|
mut:
|
2021-06-15 04:44:31 +03:00
|
|
|
add(fd int, events FdEventType, conf ...FdConfigFlags) ?
|
|
|
|
modify(fd int, events FdEventType, conf ...FdConfigFlags) ?
|
|
|
|
remove(fd int) ?
|
|
|
|
wait(timeout time.Duration) []FdEvent
|
|
|
|
close() ?
|
|
|
|
}
|
|
|
|
|
|
|
|
pub interface FdEvent {
|
|
|
|
fd int
|
|
|
|
kind FdEventType
|
|
|
|
}
|
|
|
|
|
|
|
|
[flag]
|
|
|
|
pub enum FdEventType {
|
|
|
|
read
|
|
|
|
write
|
|
|
|
peer_hangup
|
|
|
|
exception
|
|
|
|
error
|
|
|
|
hangup
|
|
|
|
}
|
|
|
|
|
|
|
|
[flag]
|
|
|
|
pub enum FdConfigFlags {
|
|
|
|
edge_trigger
|
|
|
|
one_shot
|
|
|
|
wake_up
|
|
|
|
exclusive
|
|
|
|
}
|