add a few utility words to managed-server
parent
8c51abfd06
commit
aa1df815dc
|
@ -29,11 +29,27 @@ M: managed-server handle-managed-client* ;
|
||||||
: clients ( -- assoc ) server clients>> ;
|
: clients ( -- assoc ) server clients>> ;
|
||||||
: client-streams ( -- assoc ) clients values ;
|
: client-streams ( -- assoc ) clients values ;
|
||||||
: username ( -- string ) client username>> ;
|
: username ( -- string ) client username>> ;
|
||||||
|
: everyone-else ( -- assoc )
|
||||||
|
clients [ drop username = not ] assoc-filter ;
|
||||||
|
: everyone-else-streams ( -- assoc ) everyone-else values ;
|
||||||
|
|
||||||
|
ERROR: no-such-client username ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: (send-client) ( seq managed-client -- )
|
||||||
|
swap output-stream>> '[ _ print flush ] with-output-stream* ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
: send-client ( seq username -- )
|
||||||
|
clients ?at [ no-such-client ] [ (send-client) ] if ;
|
||||||
|
|
||||||
: send-everyone ( seq -- )
|
: send-everyone ( seq -- )
|
||||||
[ client-streams ] dip '[
|
[ client-streams ] dip '[ _ (send-client) ] each ;
|
||||||
output-stream>> [ _ print flush ] with-output-stream*
|
|
||||||
] each ;
|
: send-everyone-else ( seq -- )
|
||||||
|
[ everyone-else-streams ] dip '[ _ (send-client) ] each ;
|
||||||
|
|
||||||
ERROR: already-logged-in username ;
|
ERROR: already-logged-in username ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue