]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/managed-server/managed-server.factor
change threaded-server and managed-server to take an encoding
[factor.git] / extra / managed-server / managed-server.factor
index 8fc06ddf2add0a9d57bd1f5c92ff3bac8a8f6c4e..4d4a4405258e96819427d9aff1e1f52e2ca328ec 100644 (file)
@@ -19,7 +19,9 @@ HOOK: handle-already-logged-in managed-server ( -- )
 HOOK: handle-client-join managed-server ( -- )
 HOOK: handle-client-disconnect managed-server ( -- )
 
-M: managed-server handle-already-logged-in ;
+ERROR: already-logged-in username ;
+
+M: managed-server handle-already-logged-in already-logged-in ;
 M: managed-server handle-client-join ;
 M: managed-server handle-client-disconnect ;
 
@@ -50,8 +52,6 @@ PRIVATE>
 : send-everyone-else ( seq -- )
     [ everyone-else-streams ] dip '[ _ (send-client) ] each ;
 
-ERROR: already-logged-in username ;
-
 <PRIVATE
 
 : <managed-client> ( username -- managed-client )
@@ -63,10 +63,7 @@ ERROR: already-logged-in username ;
         remote-address get >>remote-address ;
 
 : check-logged-in ( username -- username )
-    dup server clients>> key? [
-        [ server ] dip
-        [ handle-already-logged-in ] [ already-logged-in ] bi
-    ] when ;
+    dup clients key? [ handle-already-logged-in ] when ;
 
 : add-managed-client ( -- )
     client username check-logged-in clients set-at ;
@@ -87,7 +84,7 @@ M: managed-server handle-client*
     [ delete-managed-client handle-client-disconnect ]
     [ ] cleanup ;
 
-: new-managed-server ( port name class -- server )
+: new-managed-server ( port name encoding class -- server )
     new-threaded-server
         swap >>name
         swap >>insecure