]> gitweb.factorcode.org Git - factor.git/commitdiff
add a few utility words to managed-server
authorDoug Coleman <erg@jobim.(none)>
Sat, 30 May 2009 18:38:40 +0000 (13:38 -0500)
committerDoug Coleman <erg@jobim.(none)>
Sat, 30 May 2009 18:38:40 +0000 (13:38 -0500)
extra/managed-server/managed-server.factor

index 4d7ede84dc42b458594d0ee4d4a7269e15cabf90..ac4e275c9ef88893cfd887a503ecc79d7c0a099a 100644 (file)
@@ -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 ;
+
+<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 -- )
-    [ 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 ;