Fixing some issues
							parent
							
								
									c8f042aef4
								
							
						
					
					
						commit
						dd8e38a7f0
					
				| 
						 | 
					@ -106,6 +106,8 @@ HOOK: kill-process* io-backend ( handle -- )
 | 
				
			||||||
    t over set-process-killed?
 | 
					    t over set-process-killed?
 | 
				
			||||||
    process-handle [ kill-process* ] when* ;
 | 
					    process-handle [ kill-process* ] when* ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					M: process get-lapse process-lapse ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: process timed-out kill-process ;
 | 
					M: process timed-out kill-process ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HOOK: process-stream* io-backend ( desc -- stream process )
 | 
					HOOK: process-stream* io-backend ( desc -- stream process )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ lapse
 | 
				
			||||||
type eof? ;
 | 
					type eof? ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! Ports support the lapse protocol
 | 
					! Ports support the lapse protocol
 | 
				
			||||||
M: port lapse port-lapse ;
 | 
					M: port get-lapse port-lapse ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYMBOL: closed
 | 
					SYMBOL: closed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,21 +8,21 @@ TUPLE: lapse entry timeout cutoff ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: <lapse> f 0 0 \ lapse construct-boa ;
 | 
					: <lapse> f 0 0 \ lapse construct-boa ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GENERIC: lapse ( obj -- lapse )
 | 
					GENERIC: get-lapse ( obj -- lapse )
 | 
				
			||||||
GENERIC: set-timeout ( ms obj -- )
 | 
					GENERIC: set-timeout ( ms obj -- )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: object set-timeout lapse set-lapse-timeout ;
 | 
					M: object set-timeout get-lapse set-lapse-timeout ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: duplex-stream set-timeout
 | 
					M: duplex-stream set-timeout
 | 
				
			||||||
    2dup
 | 
					    2dup
 | 
				
			||||||
    duplex-stream-in set-timeout
 | 
					    duplex-stream-in set-timeout
 | 
				
			||||||
    duplex-stream-out set-timeout ;
 | 
					    duplex-stream-out set-timeout ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: timeout ( obj -- ms ) lapse lapse-timeout ;
 | 
					: timeout ( obj -- ms ) get-lapse lapse-timeout ;
 | 
				
			||||||
: entry ( obj -- dlist-node ) lapse lapse-entry ;
 | 
					: entry ( obj -- dlist-node ) get-lapse lapse-entry ;
 | 
				
			||||||
: set-entry ( dlist-node -- obj ) lapse set-lapse-entry ;
 | 
					: set-entry ( obj dlist-node -- ) get-lapse set-lapse-entry ;
 | 
				
			||||||
: cutoff ( obj -- ms ) lapse lapse-cutoff ;
 | 
					: cutoff ( obj -- ms ) get-lapse lapse-cutoff ;
 | 
				
			||||||
: set-cutoff ( ms obj -- ) lapse set-lapse-cutoff ;
 | 
					: set-cutoff ( ms obj -- ) get-lapse set-lapse-cutoff ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYMBOL: timeout-queue
 | 
					SYMBOL: timeout-queue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,6 +62,6 @@ M: object timed-out drop ;
 | 
				
			||||||
    over begin-timeout keep unqueue-timeout ; inline
 | 
					    over begin-timeout keep unqueue-timeout ; inline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: expiry-thread ( -- )
 | 
					: expiry-thread ( -- )
 | 
				
			||||||
    expire-timeouts 5000 sleep expire-timeouts ;
 | 
					    expire-timeouts 5000 sleep expiry-thread ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ expiry-thread ] "io.timeouts" add-init-hook
 | 
					[ [ expiry-thread ] in-thread ] "io.timeouts" add-init-hook
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue