36 lines
		
	
	
		
			519 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			519 B
		
	
	
	
		
			V
		
	
	
module notify
 | 
						|
 | 
						|
import time
 | 
						|
 | 
						|
// Backends should provide a `new() ?FdNotifier` function
 | 
						|
pub interface FdNotifier {
 | 
						|
	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
 | 
						|
}
 |