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
 | |
| }
 |