From aa1df815dc2fdbf8c9090e274cc3a9b5c0e81ef1 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 30 May 2009 13:38:40 -0500 Subject: [PATCH] add a few utility words to managed-server --- extra/managed-server/managed-server.factor | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/extra/managed-server/managed-server.factor b/extra/managed-server/managed-server.factor index 4d7ede84dc..ac4e275c9e 100644 --- a/extra/managed-server/managed-server.factor +++ b/extra/managed-server/managed-server.factor @@ -29,11 +29,27 @@ M: managed-server handle-managed-client* ; : clients ( -- assoc ) server clients>> ; : client-streams ( -- assoc ) clients values ; : 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 ; + +> '[ _ print flush ] with-output-stream* ; + +PRIVATE> + +: send-client ( seq username -- ) + clients ?at [ no-such-client ] [ (send-client) ] if ; : send-everyone ( seq -- ) - [ client-streams ] dip '[ - output-stream>> [ _ print flush ] with-output-stream* - ] each ; + [ client-streams ] dip '[ _ (send-client) ] each ; + +: send-everyone-else ( seq -- ) + [ everyone-else-streams ] dip '[ _ (send-client) ] each ; ERROR: already-logged-in username ;