dummy object on init-monitors

fix windows load errors
monitors almost work again
db4
Doug Coleman 2008-04-11 22:36:24 -05:00
parent 77d9dc06a6
commit dadaae59a1
6 changed files with 68 additions and 68 deletions

View File

@ -1,51 +1,55 @@
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: io.backend kernel continuations namespaces sequences
assocs hashtables sorting arrays threads boxes io.timeouts
accessors concurrency.mailboxes ;
IN: io.monitors
HOOK: init-monitors io-backend ( -- )
HOOK: dispose-monitors io-backend ( -- )
: with-monitors ( quot -- )
[
init-monitors
[ dispose-monitors ] [ ] cleanup
] with-scope ; inline
TUPLE: monitor < identity-tuple path queue timeout ;
M: monitor hashcode* path>> hashcode* ;
M: monitor timeout timeout>> ;
M: monitor set-timeout (>>timeout) ;
: construct-monitor ( path mailbox class -- monitor )
construct-empty
swap >>queue
swap >>path ; inline
: queue-change ( path changes monitor -- )
3dup and and
[ [ 3array ] keep queue>> mailbox-put ] [ 3drop ] if ;
HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor )
: <monitor> ( path recursive? -- monitor )
<mailbox> (monitor) ;
: next-change ( monitor -- path changed )
[ queue>> ] [ timeout ] bi mailbox-get-timeout first2 ;
SYMBOL: +add-file+
SYMBOL: +remove-file+
SYMBOL: +modify-file+
SYMBOL: +rename-file-old+
SYMBOL: +rename-file-new+
SYMBOL: +rename-file+
: with-monitor ( path recursive? quot -- )
>r <monitor> r> with-disposal ; inline
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: io.backend kernel continuations namespaces sequences
assocs hashtables sorting arrays threads boxes io.timeouts
accessors concurrency.mailboxes ;
IN: io.monitors
HOOK: init-monitors io-backend ( -- )
M: object init-monitors ;
HOOK: dispose-monitors io-backend ( -- )
M: object dispose-monitors ;
: with-monitors ( quot -- )
[
init-monitors
[ dispose-monitors ] [ ] cleanup
] with-scope ; inline
TUPLE: monitor < identity-tuple path queue timeout ;
M: monitor hashcode* path>> hashcode* ;
M: monitor timeout timeout>> ;
M: monitor set-timeout (>>timeout) ;
: construct-monitor ( path mailbox class -- monitor )
construct-empty
swap >>queue
swap >>path ; inline
: queue-change ( path changes monitor -- )
3dup and and
[ [ 3array ] keep queue>> mailbox-put ] [ 3drop ] if ;
HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor )
: <monitor> ( path recursive? -- monitor )
<mailbox> (monitor) ;
: next-change ( monitor -- path changed )
[ queue>> ] [ timeout ] bi mailbox-get-timeout first2 ;
SYMBOL: +add-file+
SYMBOL: +remove-file+
SYMBOL: +modify-file+
SYMBOL: +rename-file-old+
SYMBOL: +rename-file-new+
SYMBOL: +rename-file+
: with-monitor ( path recursive? quot -- )
>r <monitor> r> with-disposal ; inline

View File

@ -13,10 +13,6 @@ M: bsd init-io ( -- )
[ mx get-global reads>> set-at ]
[ mx get-global writes>> set-at ] 2bi ;
M: bsd init-monitors ;
M: bsd dispose-monitors ;
M: bsd (monitor) ( path recursive? mailbox -- )
swap [ "Recursive kqueue monitors not supported" throw ] when
<vnode-monitor> ;

View File

@ -12,10 +12,6 @@ TUPLE: macosx-monitor < monitor handle ;
>r first { +modify-file+ } r> queue-change
] curry each ;
M: macosx init-monitors ;
M: macosx dispose-monitors ;
M:: macosx (monitor) ( path recursive? mailbox -- monitor )
path mailbox macosx-monitor construct-monitor
dup [ enqueue-notifications ] curry

View File

@ -3,7 +3,7 @@ io.timeouts io.nonblocking io.windows io.windows.nt.backend
kernel libc math threads windows windows.kernel32 system
alien.c-types alien.arrays sequences combinators combinators.lib
sequences.lib ascii splitting alien strings assocs namespaces
io.files.private ;
io.files.private accessors ;
IN: io.windows.nt.files
M: winnt cwd
@ -87,9 +87,9 @@ M: port port-flush
: finish-read ( overlapped port -- )
dup pending-error
tuck get-overlapped-result dup zero? [
drop t swap set-port-eof?
drop t >>eof drop
] [
dup pick n>buffer
dup pick buffer>> n>buffer
swap update-file-ptr
] if ;

View File

@ -4,7 +4,7 @@ USING: alien alien.c-types libc destructors locals
kernel math assocs namespaces continuations sequences hashtables
sorting arrays combinators math.bitfields strings system
io.windows io.windows.nt.backend io.monitors io.nonblocking
io.buffers io.files io.timeouts io
io.buffers io.files io.timeouts io accessors threads
windows windows.kernel32 windows.types ;
IN: io.windows.nt.monitors
@ -21,7 +21,9 @@ IN: io.windows.nt.monitors
dup add-completion
f <win32-file> ;
TUPLE: win32-monitor < monitor port recursive ;
TUPLE: win32-monitor-port < input-port recursive ;
TUPLE: win32-monitor < monitor port ;
: begin-reading-changes ( port -- overlapped )
{
@ -83,9 +85,11 @@ TUPLE: win32-monitor < monitor port recursive ;
M:: winnt (monitor) ( path recursive? mailbox -- monitor )
[
path mailbox win32-monitor construct-monitor
path open-directory <buffered-port> >>port
recursive? >>recursive
dup port>> [ fill-queue-thread ] curry spawn drop
path open-directory \ win32-monitor-port <buffered-port>
recursive? >>recursive
>>port
dup [ fill-queue-thread ] curry
"Windows monitor thread" spawn drop
] with-destructors ;
M: win32-monitor dispose

View File

@ -2,7 +2,7 @@ USING: alien alien.accessors alien.c-types byte-arrays
continuations destructors io.nonblocking io.timeouts io.sockets
io.sockets.impl io namespaces io.streams.duplex io.windows
io.windows.nt.backend windows.winsock kernel libc math sequences
threads classes.tuple.lib system ;
threads classes.tuple.lib system accessors ;
IN: io.windows.nt.sockets
: malloc-int ( object -- object )