irc.client: Got rid of the annoying 100% CPU

db4
U-WSCHLIEP-PC\wschliep 2008-09-19 18:32:49 -04:00
parent 0a8980d37e
commit 7b8be1222f
1 changed files with 6 additions and 7 deletions

13
extra/irc/client/client.factor Normal file → Executable file
View File

@ -91,8 +91,6 @@ SYMBOL: current-irc-client
: irc-send ( irc-message -- ) irc> out-messages>> mailbox-put ;
: listener> ( name -- listener/f ) irc> listeners>> at ;
: maybe-mailbox-get ( mailbox quot: ( irc-message -- ) -- )
[ dup mailbox-empty? [ drop 0.1 sleep ] ] dip '[ mailbox-get @ ] if ; inline
GENERIC: to-listener ( message obj -- )
@ -294,14 +292,14 @@ DEFER: (connect-irc)
[ (reader-loop) ] [ handle-disconnect ] recover t ;
: writer-loop ( -- ? )
irc> out-messages>> [ handle-outgoing-irc ] maybe-mailbox-get t ;
irc> out-messages>> mailbox-get handle-outgoing-irc t ;
! ======================================
! Processing loops
! ======================================
: in-multiplexer-loop ( -- ? )
irc> in-messages>> [ handle-incoming-irc ] maybe-mailbox-get t ;
irc> in-messages>> mailbox-get handle-incoming-irc t ;
: strings>privmsg ( name string -- privmsg )
privmsg new [ (>>trailing) ] keep [ (>>name) ] keep ;
@ -314,9 +312,10 @@ DEFER: (connect-irc)
: listener-loop ( name -- ? )
dup listener> [
out-messages>> [ maybe-annotate-with-name
irc> out-messages>> mailbox-put ] with
maybe-mailbox-get t
out-messages>> mailbox-get
maybe-annotate-with-name
irc> out-messages>> mailbox-put
t
] [ drop f ] if* ;
: spawn-irc-loop ( quot: ( -- ? ) name -- )