]> gitweb.factorcode.org Git - factor.git/commitdiff
change threaded-server and managed-server to take an encoding
authorDoug Coleman <erg@jobim.local>
Sun, 31 May 2009 00:15:53 +0000 (19:15 -0500)
committerDoug Coleman <erg@jobim.local>
Sun, 31 May 2009 00:15:53 +0000 (19:15 -0500)
12 files changed:
basis/concurrency/distributed/distributed.factor
basis/ftp/server/server.factor
basis/http/server/server.factor
basis/io/servers/connection/connection-docs.factor
basis/io/servers/connection/connection-tests.factor
basis/io/servers/connection/connection.factor
extra/fuel/remote/remote.factor
extra/managed-server/chat/chat.factor
extra/managed-server/managed-server.factor
extra/mongodb/mmm/mmm.factor
extra/time-server/time-server.factor
extra/tty-server/tty-server.factor

index ca1c5762f68378cdebb924d72bf2a6862eb21945..52627f2ed9ed1e6fabd8b9185d7bae0acb0b7ab7 100644 (file)
@@ -13,9 +13,8 @@ SYMBOL: local-node
     [ first2 get-process send ] [ stop-this-server ] if* ;
 
 : <node-server> ( addrspec -- threaded-server )
-    <threaded-server>
+    binary <threaded-server>
         swap >>insecure
-        binary >>encoding
         "concurrency.distributed" >>name
         [ handle-node-client ] >>handler ;
 
index 8438aae94e1b2792e3cfbe98e8583006f8ea56c1..c9518bdef1d149d494471f9434bce0cebc1b86c6 100644 (file)
@@ -341,12 +341,11 @@ M: ftp-server handle-client* ( server -- )
     ] with-destructors ;
 
 : <ftp-server> ( directory port -- server )
-    ftp-server new-threaded-server
+    latin1 ftp-server new-threaded-server
         swap >>insecure
         swap canonicalize-path >>serving-directory
         "ftp.server" >>name
-        5 minutes >>timeout
-        latin1 >>encoding ;
+        5 minutes >>timeout ;
 
 : ftpd ( directory port -- )
     <ftp-server> start-server ;
index c838471e3f1b08f674302c79ff24b93f53f9ef89..8682c97c731fdec9d15d8222698698d3cf812692 100755 (executable)
@@ -269,7 +269,7 @@ M: http-server handle-client*
     ] with-destructors ;
 
 : <http-server> ( -- server )
-    http-server new-threaded-server
+    ascii http-server new-threaded-server
         "http.server" >>name
         "http" protocol-port >>insecure
         "https" protocol-port >>secure ;
index 67c7cb13dda8a8d2075038828af63ff6ee46dbc3..872f3166c2b841c941758a1fecd68404ba36e2c9 100644 (file)
@@ -83,8 +83,8 @@ HELP: new-threaded-server
 { $description "Creates a new instance of a subclass of " { $link threaded-server } ". Subclasses can implement the " { $link handle-client* } " generic word." } ;
 
 HELP: <threaded-server>
-{ $values { "threaded-server" threaded-server } }
-{ $description "Creates a new threaded server. Its slots should be filled in as per " { $link "server-config" } ", before " { $link start-server } " is called to begin waiting for connections." } ;
+{ $values { "encoding" "an encoding descriptor" } { "threaded-server" threaded-server } }
+{ $description "Creates a new threaded server with streams encoded " { $snippet "encoding" } ". Its slots should be filled in as per " { $link "server-config" } ", before " { $link start-server } " is called to begin waiting for connections." } ;
 
 HELP: remote-address
 { $var-description "Variable holding the address specifier of the current client connection. See " { $link "network-addressing" } "." } ;
index ab99531eb495666e84fa82a2035a17a81537eb39..14100d3f048e5b05ac045bf983c15b79a3614842 100644 (file)
@@ -3,10 +3,10 @@ USING: tools.test io.servers.connection io.sockets namespaces
 io.servers.connection.private kernel accessors sequences
 concurrency.promises io.encodings.ascii io threads calendar ;
 
-[ t ] [ <threaded-server> listen-on empty? ] unit-test
+[ t ] [ ascii <threaded-server> listen-on empty? ] unit-test
 
 [ f ] [
-    <threaded-server>
+    ascii <threaded-server>
         25 internet-server >>insecure
     listen-on
     empty?
@@ -19,16 +19,16 @@ concurrency.promises io.encodings.ascii io threads calendar ;
     and
 ] unit-test
 
-[ ] [ <threaded-server> init-server drop ] unit-test
+[ ] [ ascii <threaded-server> init-server drop ] unit-test
 
 [ 10 ] [
-    <threaded-server>
+    ascii <threaded-server>
         10 >>max-connections
     init-server semaphore>> count>> 
 ] unit-test
 
 [ ] [
-    <threaded-server>
+    ascii <threaded-server>
         5 >>max-connections
         0 >>insecure
         [ "Hello world." write stop-this-server ] >>handler
index 8eafe1b5bf24a6f0e63330f556f771ce2be4f64f..df6c21e7cce39beda7a4f303ccb406d0ad0ec84e 100644 (file)
@@ -27,18 +27,18 @@ ready ;
 
 : internet-server ( port -- addrspec ) f swap <inet> ;
 
-: new-threaded-server ( class -- threaded-server )
+: new-threaded-server ( encoding class -- threaded-server )
     new
+        swap >>encoding
         "server" >>name
         DEBUG >>log-level
-        ascii >>encoding
         1 minutes >>timeout
         V{ } clone >>sockets
         <secure-config> >>secure-config
         [ "No handler quotation" throw ] >>handler
         <flag> >>ready ; inline
 
-: <threaded-server> ( -- threaded-server )
+: <threaded-server> ( encoding -- threaded-server )
     threaded-server new-threaded-server ;
 
 GENERIC: handle-client* ( threaded-server -- )
index d13aff800a4290d44d7bcf46e93aa3872308bf9d..d3b48efac696e858ab40132ddf112ada637e25d8 100644 (file)
@@ -11,9 +11,8 @@ IN: fuel.remote
     [ [ print-error-and-restarts ] error-hook set listener ] with-scope ;
 
 : server ( port -- server )
-    <threaded-server>
+    utf8 <threaded-server>
         "tty-server" >>name
-        utf8 >>encoding
         swap local-server >>insecure
         [ start-listener ] >>handler
         f >>timeout ;
index e1331f360b418b87acaa890b28f27ca7c2435bcf..8835e3d8a64cbaf5e6554ddecc19055262ad8650 100644 (file)
@@ -100,8 +100,7 @@ Disconnects a user from the chat server."> "quit" add-command
     ] if ;
 
 : <chat-server> ( port -- managed-server )
-    "chat-server" chat-server new-managed-server
-        utf8 >>encoding ;
+    "chat-server" utf8 chat-server new-managed-server ;
 
 : handle-chat ( string -- )
     [
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
index 25c4c88203a10abda2959d12b0f071a576cae0c7..8e561436645031dc034e82dab4c39361205db1f0 100644 (file)
@@ -89,9 +89,8 @@ M: mdb-msg dump-message ( message -- )
 
 : start-mmm-server ( -- )
     output-stream get mmm-dump-output set
-    <threaded-server> [ mmm-t-srv set ] keep 
+    binary <threaded-server> [ mmm-t-srv set ] keep 
     "127.0.0.1" mmm-port get <inet4> >>insecure
-    binary >>encoding
     [ handle-mmm-connection ] >>handler
     start-server* ;
 
@@ -99,4 +98,4 @@ M: mdb-msg dump-message ( message -- )
     check-options
     start-mmm-server ;
     
-MAIN: run-mmm
\ No newline at end of file
+MAIN: run-mmm
index 28debf17cd29738785a30baa35c6ba27d6c4f2df..500f0276d7919edbb3cc593a144eec5c8705ae8e 100644 (file)
@@ -1,14 +1,14 @@
 ! Copyright (C) 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: io io.servers.connection accessors threads
-calendar calendar.format ;
+USING: accessors calendar calendar.format io io.encodings.ascii
+io.servers.connection threads ;
 IN: time-server
 
 : handle-time-client ( -- )
     now timestamp>rfc822 print ;
 
 : <time-server> ( -- threaded-server )
-    <threaded-server>
+    ascii <threaded-server>
         "time-server" >>name
         1234 >>insecure
         [ handle-time-client ] >>handler ;
index 4ba38ad06a7d669d3d8e0a87208e02036e36b475..0c7395f7f070d73efafd4bcca2bef9b83b58d7a6 100644 (file)
@@ -3,9 +3,8 @@ accessors kernel ;
 IN: tty-server
 
 : <tty-server> ( port -- )
-    <threaded-server>
+    utf8 <threaded-server>
         "tty-server" >>name
-        utf8 >>encoding
         swap local-server >>insecure
         [ listener ] >>handler
     start-server ;