]> gitweb.factorcode.org Git - factor.git/commitdiff
Squashed commit of the following:
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 19 Sep 2010 18:38:02 +0000 (13:38 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 19 Sep 2010 18:38:02 +0000 (13:38 -0500)
commit 8a15381d30508b8f36a9e36dc3a0afc3c962c853
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 11 14:32:30 2010 -0500

    Squash threaded-server branch

22 files changed:
basis/concurrency/distributed/distributed-docs.factor
basis/concurrency/distributed/distributed-tests.factor
basis/concurrency/distributed/distributed.factor
basis/ftp/server/server-tests.factor
basis/ftp/server/server.factor
basis/http/http-tests.factor
basis/http/server/server-docs.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
basis/mime/multipart/multipart-tests.factor
basis/tools/deploy/deploy-tests.factor
extra/fuel/remote/remote.factor
extra/time-server/time-server.factor
extra/tty-server/tty-server.factor
extra/webapps/calculator/calculator.factor
extra/webapps/counter/counter.factor
extra/webapps/ip/ip.factor
extra/webapps/site-watcher/site-watcher.factor
extra/webapps/todo/todo.factor
extra/websites/concatenative/concatenative.factor

index 8ea7153b0bcebc66e1e7095b1ff9b9e4bf86d309..0769be6386389e59c06bfbb3e4a6608999710c45 100644 (file)
@@ -5,7 +5,7 @@ HELP: local-node
 { $var-description "A variable containing the node the current thread is running on." } ;
 
 HELP: start-node
-{ $values { "port" "a port number between 0 and 65535" } }
+{ $values { "port" "a port number between 0 and 65535" } { "threaded-server" "a threaded-server tuple" } }
 { $description "Starts a node server for receiving messages from remote Factor instances." } ;
 
 ARTICLE: "concurrency.distributed.example" "Distributed Concurrency Example"
index 1a46d0e38fac3080a47b4e3737414b036c8a2726..0f06442c26738e678cb2f36f78e1f9184392c97b 100644 (file)
@@ -13,7 +13,7 @@ IN: concurrency.distributed.tests
 
 [ ] [ [ "distributed-concurrency-test" temp-file delete-file ] ignore-errors ] unit-test
 
-[ ] [ test-node dup (start-node) ] unit-test
+[ ] [ test-node dup (start-node) drop ] unit-test
 
 [ ] [
     [
index 229cea85480fa5a223eab0fe49b7e826604905bc..ef69728db04ff8e58fbd35094b3c7eeefb61af1b 100644 (file)
@@ -34,10 +34,10 @@ SYMBOL: local-node
         "concurrency.distributed" >>name
         [ handle-node-client ] >>handler ;
 
-: (start-node) ( addrspec addrspec -- )
-    local-node set-global <node-server> start-server* ;
+: (start-node) ( addrspec addrspec -- threaded-server )
+    local-node set-global <node-server> start-server ;
 
-: start-node ( port -- )
+: start-node ( port -- threaded-server )
     host-name over <inet> (start-node) ;
 
 TUPLE: remote-thread node id ;
index 585728dff609555702bc00afe7491fe5c4a971c4..2954db0f8b4962bac1f75badb8400c97750c2aa0 100644 (file)
@@ -1,12 +1,12 @@
 USING: calendar ftp.server io.encodings.ascii io.files
 io.files.unique namespaces threads tools.test kernel
 io.servers.connection ftp.client accessors urls
-io.pathnames io.directories sequences fry io.backend ;
+io.pathnames io.directories sequences fry io.backend
+continuations ;
 FROM: ftp.client => ftp-get ;
 IN: ftp.server.tests
 
-: test-file-contents ( -- string )
-    "Files are so boring anymore." ;
+CONSTANT: test-file-contents "Files are so boring anymore."
 
 : create-test-file ( -- path )
     test-file-contents
@@ -15,28 +15,24 @@ IN: ftp.server.tests
 
 : test-ftp-server ( quot -- )
     '[
-        current-temporary-directory get 0
-        <ftp-server>
-        [ start-server* ]
-        [
-            sockets>> first addr>> port>>
+        current-temporary-directory get
+        0 <ftp-server> [
+            insecure-port
             <url>
                 swap >>port
                 "ftp" >>protocol
                 "localhost" >>host
                 create-test-file >>path
                 @
-        ]
-        [ stop-server ] tri
-    ] with-unique-directory drop ; inline
+        ] with-threaded-server
+    ] cleanup-unique-directory ; inline
 
 [ t ]
 [
-    
     [
-        unique-directory [
+        [
             [ ftp-get ] [ path>> file-name ascii file-contents ] bi
-        ] with-directory
+        ] cleanup-unique-working-directory
     ] test-ftp-server test-file-contents =
 ] unit-test
 
@@ -44,8 +40,8 @@ IN: ftp.server.tests
     
     [
         "/" >>path
-        unique-directory [
+        [
             [ ftp-get ] [ path>> file-name ascii file-contents ] bi
-        ] with-directory
+        ] cleanup-unique-working-directory
     ] test-ftp-server test-file-contents =
 ] must-fail
index 8fb0c1604395f07755492398f638a2113f0c9ff0..e6a47c3ffd3e9ebe46a135ae1bf80b1dbb2e49c7 100644 (file)
@@ -365,7 +365,7 @@ M: ftp-server handle-client* ( server -- )
         "ftp.server" >>name
         5 minutes >>timeout ;
 
-: ftpd ( directory port -- )
+: ftpd ( directory port -- server )
     <ftp-server> start-server ;
 
 ! sudo tcpdump -i en1 -A -s 10000  tcp port 21
index 8bbc72257d84b6e46465620b915d77550b194729..a48c1ec48de4387c63f0b27e7641d79616671560 100644 (file)
@@ -231,7 +231,7 @@ test-db [
         <http-server>
             0 >>insecure
             f >>secure
-        dup start-server*
+        start-server
         sockets>> first addr>> port>>
     ] with-scope "port" set ;
 
index 6f03a2ea965f2face08b32eb7a1127fbb5db3b40..7e8d2309716cca1c24b008283961a91d1b647afb 100644 (file)
@@ -46,7 +46,7 @@ HELP: <http-server>
 { $description "Creates a new HTTP server with default parameters." } ;
 
 HELP: httpd
-{ $values { "port" integer } }
+{ $values { "port" integer } { "http-server" http-server } }
 { $description "Starts an HTTP server on the specified port number." }
 { $notes "For more flexibility, use " { $link <http-server> } " and fill in the tuple slots before calling " { $link start-server } "." } ;
 
index 637b4b3237f2d5b69b5379b0c9131e3e43335196..9e4a8ac4bfa2ac314164e4ee85a24295f610ca35 100644 (file)
@@ -298,7 +298,7 @@ M: http-server handle-client*
         "http" protocol-port >>insecure
         "https" protocol-port >>secure ;
 
-: httpd ( port -- )
+: httpd ( port -- http-server )
     <http-server>
         swap >>insecure
         f >>secure
index fa5acbd0547c48dbdc0e6cc0eac1192cbe69d89e..73225c407f3fe9cb8816d1f26b5cf04ea917012f 100644 (file)
@@ -1,9 +1,9 @@
+USING: calendar classes concurrency.semaphores help.markup
+help.syntax io io.sockets io.sockets.secure math quotations ;
 IN: io.servers.connection
-USING: help help.syntax help.markup io io.sockets
-io.sockets.secure concurrency.semaphores calendar classes math ;
 
 ARTICLE: "server-config" "Threaded server configuration"
-"The " { $link threaded-server } " tuple has a variety of slots which can be set before starting the server with " { $link start-server } " or " { $link start-server* } "."
+"The " { $link threaded-server } " tuple has a variety of slots which can be set before starting the server with " { $link start-server } "."
 { $subsections
     "server-config-logging"
     "server-config-listen"
@@ -66,13 +66,13 @@ ARTICLE: "io.servers.connection" "Threaded servers"
 "The server must be configured before it can be started." 
 { $subsections "server-config" }
 "Starting the server:"
-{ $subsections
-    start-server
-    start-server*
-    wait-for-server
-}
+{ $subsections start-server }
 "Stopping the server:"
 { $subsections stop-server }
+"Waiting for the server to stop:"
+{ $subsections wait-for-server }
+"Combinator for running a server:"
+{ $subsections with-threaded-server }
 "From within the dynamic scope of a client handler, several words can be used to interact with the threaded server:"
 { $subsections
     stop-this-server
@@ -105,30 +105,32 @@ HELP: handle-client*
 
 HELP: start-server
 { $values { "threaded-server" threaded-server } }
-{ $description "Starts a threaded server." }
+{ $description "Starts a threaded server and returns after the server is fully running. Throws an error if any of the ports cannot be aquired." }
 { $notes "Use " { $link stop-server } " or " { $link stop-this-server } " to stop the server." } ;
 
-HELP: wait-for-server
-{ $values { "threaded-server" threaded-server } }
-{ $description "Waits for a threaded server to begin accepting connections." } ;
-
-HELP: start-server*
+HELP: stop-server
 { $values { "threaded-server" threaded-server } }
-{ $description "Starts a threaded server, returning as soon as it is ready to begin accepting connections." } ;
+{ $description "Stops a threaded server, preventing it from accepting any more connections. All client connections which have already been opened continue to be serviced." } ;
 
-HELP: stop-server
+HELP: wait-for-server
 { $values { "threaded-server" threaded-server } }
-{ $description "Stops a threaded server, preventing it from accepting any more connections and returning to the caller of " { $link start-server } ". All client connections which have already been opened continue to be serviced." } ;
+{ $description "Waits for a threaded server to stop serving new connections." } ;
 
 HELP: stop-this-server
-{ $description "Stops the current threaded server, preventing it from accepting any more connections and returning to the caller of " { $link start-server } ". All client connections which have already been opened continue to be serviced." } ;
+{ $description "Stops the current threaded server, preventing it from accepting any more connections. All client connections which have already been opened continue to be serviced." } ;
+
+HELP: with-threaded-server
+{ $values
+    { "threaded-server" threaded-server } { "quot" quotation }    
+}
+{ $description "Runs a server and calls a quotation, stopping the server once the quotation returns." } ;
 
 HELP: secure-port
 { $values { "n" { $maybe integer } } }
-{ $description "Outputs the port number on which the current threaded server accepts secure socket connections. Outputs " { $link f } " if the current threaded server does not accept secure socket connections." }
+{ $description "Outputs one of the port numbers on which the current threaded server accepts secure socket connections. Outputs " { $link f } " if the current threaded server does not accept secure socket connections." }
 { $notes "Can only be used from the dynamic scope of a " { $link handle-client* } " call." } ;
 
 HELP: insecure-port
 { $values { "n" { $maybe integer } } }
-{ $description "Outputs the port number on which the current threaded server accepts ordinary socket connections. Outputs " { $link f } " if the current threaded server does not accept ordinary socket connections." }
+{ $description "Outputs one of the port numbers on which the current threaded server accepts ordinary socket connections. Outputs " { $link f } " if the current threaded server does not accept ordinary socket connections." }
 { $notes "Can only be used from the dynamic scope of a " { $link handle-client* } " call." } ;
index 14100d3f048e5b05ac045bf983c15b79a3614842..72f470695759fb49d037579be88d71c3d846050e 100644 (file)
@@ -1,7 +1,8 @@
+USING: accessors calendar concurrency.promises fry io
+io.encodings.ascii io.servers.connection
+io.servers.connection.private io.sockets kernel namespaces
+sequences threads tools.test ;
 IN: io.servers.connection
-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 ] [ ascii <threaded-server> listen-on empty? ] unit-test
 
@@ -27,12 +28,19 @@ concurrency.promises io.encodings.ascii io threads calendar ;
     init-server semaphore>> count>> 
 ] unit-test
 
-[ ] [
+[ "Hello world." ] [
     ascii <threaded-server>
         5 >>max-connections
         0 >>insecure
         [ "Hello world." write stop-this-server ] >>handler
-    dup start-server* sockets>> first addr>> port>> "port" set
+    [
+        "localhost" insecure-port <inet> ascii <client> drop stream-contents
+    ] with-threaded-server
 ] unit-test
 
-[ "Hello world." ] [ "localhost" "port" get <inet> ascii <client> drop stream-contents ] unit-test
+[ ] [
+    ascii <threaded-server>
+        5 >>max-connections
+        0 >>insecure
+    start-server [ '[ _ wait-for-server ] in-thread ] [ stop-server ] bi
+] unit-test
index 494ce02d8abb48bf91a863fac4f25d97729e4061..b44aa943b8d95cd7867ecba9a2712a26b7cf1445 100644 (file)
@@ -1,28 +1,53 @@
-! Copyright (C) 2003, 2009 Slava Pestov.
+! Copyright (C) 2003, 2010 Slava Pestov, Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: continuations destructors kernel math math.parser
-namespaces parser sequences strings prettyprint
-quotations combinators logging calendar assocs present
-fry accessors arrays io io.sockets io.encodings.ascii
-io.sockets.secure io.files io.streams.duplex io.timeouts
-io.encodings threads make concurrency.combinators
-concurrency.semaphores concurrency.flags
-combinators.short-circuit ;
+USING: accessors arrays calendar combinators
+combinators.short-circuit concurrency.combinators
+concurrency.count-downs concurrency.flags
+concurrency.semaphores continuations debugger destructors fry
+io io.sockets io.sockets.secure io.streams.duplex io.styles
+io.timeouts kernel logging make math math.parser namespaces
+present prettyprint random sequences sets strings threads ;
+FROM: namespaces => set ;
 IN: io.servers.connection
 
-TUPLE: threaded-server
+TUPLE: threaded-server < identity-tuple
 name
 log-level
 secure
 insecure
 secure-config
-sockets
+servers
 max-connections
 semaphore
 timeout
 encoding
 handler
-ready ;
+server-stopped ;
+
+SYMBOL: running-servers
+running-servers [ HS{ } clone ] initialize
+
+ERROR: server-already-running threaded-server ;
+
+ERROR: server-not-running threaded-server ;
+
+<PRIVATE
+
+: must-be-running ( threaded-server -- threaded-server )
+    dup running-servers get in? [ server-not-running ] unless ;
+
+: must-not-be-running ( threaded-server -- threaded-server )
+    dup running-servers get in? [ server-already-running ] when ;
+
+: add-running-server ( threaded-server -- )
+    must-not-be-running
+    running-servers get adjoin ;
+
+: remove-running-server ( threaded-server -- )
+    must-be-running
+    running-servers get delete ;
+
+PRIVATE>
 
 : local-server ( port -- addrspec ) "localhost" swap <inet> ;
 
@@ -33,10 +58,8 @@ ready ;
         "server" >>name
         DEBUG >>log-level
         <secure-config> >>secure-config
-        V{ } clone >>sockets
         1 minutes >>timeout
         [ "No handler quotation" throw ] >>handler
-        <flag> >>ready
         swap >>encoding ;
 
 : <threaded-server> ( encoding -- threaded-server )
@@ -46,16 +69,25 @@ GENERIC: handle-client* ( threaded-server -- )
 
 <PRIVATE
 
-: >insecure ( addrspec -- addrspec' )
-    dup { [ integer? ] [ string? ] } 1|| [ internet-server ] when ;
+GENERIC: (>insecure) ( obj -- obj )
+
+M: inet (>insecure) ;
+M: local (>insecure) ;
+M: integer (>insecure) internet-server ;
+M: string (>insecure) internet-server ;
+M: array (>insecure) [ (>insecure) ] map ;
+M: f (>insecure) ;
+
+: >insecure ( obj -- seq )
+    (>insecure) dup sequence? [ 1array ] unless ;
 
 : >secure ( addrspec -- addrspec' )
     >insecure
-    dup { [ secure? ] [ not ] } 1|| [ <secure> ] unless ;
+    [ dup { [ secure? ] [ not ] } 1|| [ <secure> ] unless ] map ;
 
 : listen-on ( threaded-server -- addrspecs )
-    [ secure>> >secure ] [ insecure>> >insecure ] bi
-    [ dup [ resolve-host ] when ] bi@ append ;
+    [ secure>> >secure ] [ insecure>> >insecure ] bi append
+    [ resolve-host ] map concat ;
 
 : accepted-connection ( remote local -- )
     [
@@ -81,57 +113,72 @@ M: threaded-server handle-client* handler>> call( -- ) ;
 
 \ handle-client NOTICE add-error-logging
 
-: thread-name ( server-name addrspec -- string )
+: client-thread-name ( addrspec -- string )
+    [ threaded-server get name>> ] dip
     unparse-short " connection from " glue ;
 
-: accept-connection ( threaded-server -- )
+: (accept-connection) ( server -- )
     [ accept ] [ addr>> ] bi
     [ '[ _ _ _ handle-client ] ]
-    [ drop threaded-server get name>> swap thread-name ] 2bi
+    [ drop client-thread-name ] 2bi
     spawn drop ;
 
-: accept-loop ( threaded-server -- )
-    [
-        threaded-server get semaphore>>
-        [ [ accept-connection ] with-semaphore ]
-        [ accept-connection ]
-        if*
-    ] [ accept-loop ] bi ;
+: accept-connection ( server -- )
+    threaded-server get semaphore>>
+    [ [ (accept-connection) ] with-semaphore ]
+    [ (accept-connection) ]
+    if* ;
 
-: started-accept-loop ( threaded-server -- )
-    threaded-server get
-    [ sockets>> push ] [ ready>> raise-flag ] bi ;
+: accept-loop ( server -- )
+    [ accept-connection ] [ accept-loop ] bi ;
 
-: start-accept-loop ( addrspec -- )
-    threaded-server get encoding>> <server>
-    [ started-accept-loop ] [ [ accept-loop ] with-disposal ] bi ;
+: start-accept-loop ( server -- ) accept-loop ;
 
 \ start-accept-loop NOTICE add-error-logging
 
 : init-server ( threaded-server -- threaded-server )
+    <flag> >>server-stopped
     dup semaphore>> [
         dup max-connections>> [
             <semaphore> >>semaphore
         ] when*
     ] unless ;
 
+ERROR: no-ports-configured threaded-server ;
+
+: (make-servers) ( theaded-server addrspecs -- servers )
+    swap encoding>>
+    '[ [ _ <server> |dispose ] map ] with-destructors ;
+
+: set-servers ( threaded-server -- threaded-server )
+    dup dup listen-on [ no-ports-configured ] [ (make-servers) ] if-empty
+    >>servers ;
+
+: server-thread-name ( threaded-server addrspec -- string )
+    [ name>> ] [ addr>> present ] bi* " server on " glue ;
+
 : (start-server) ( threaded-server -- )
     init-server
     dup threaded-server [
-        [ ] [ name>> ] bi [
-            [ listen-on [ start-accept-loop ] parallel-each ]
-            [ ready>> raise-flag ]
-            bi
+        [ ] [ name>> ] bi
+        [
+            set-servers
+            dup add-running-server
+            dup servers>>
+            [
+                [ nip '[ _ [ start-accept-loop ] with-disposal ] ]
+                [ server-thread-name ] 2bi spawn drop
+            ] with each
         ] with-logging
     ] with-variable ;
 
 PRIVATE>
 
-: start-server ( threaded-server -- )
+: start-server ( threaded-server -- threaded-server )
     #! Only create a secure-context if we want to listen on
     #! a secure port, otherwise start-server won't work at
     #! all if SSL is not available.
-    dup secure>> [
+    dup dup secure>> [
         dup secure-config>> [
             (start-server)
         ] with-secure-context
@@ -139,28 +186,53 @@ PRIVATE>
         (start-server)
     ] if ;
 
-: wait-for-server ( threaded-server -- )
-    ready>> wait-for-flag ;
-
-: start-server* ( threaded-server -- )
-    [ [ start-server ] curry "Threaded server" spawn drop ]
-    [ wait-for-server ]
-    bi ;
+: server-running? ( threaded-server -- ? )
+    server-stopped>> [ value>> not ] [ f ] if* ;
 
 : stop-server ( threaded-server -- )
-    [ f ] change-sockets drop dispose-each ;
+    dup server-running? [
+        [ [ f ] change-servers drop dispose-each ]
+        [ remove-running-server ]
+        [ server-stopped>> raise-flag ] tri
+    ] [
+        drop
+    ] if ;
 
 : stop-this-server ( -- )
     threaded-server get stop-server ;
 
-GENERIC: port ( addrspec -- n )
+: wait-for-server ( threaded-server -- )
+    server-stopped>> wait-for-flag ;
+
+: with-threaded-server ( threaded-server quot -- )
+    over
+    '[
+        [ _ start-server threaded-server _ with-variable ]
+        [ _ stop-server ]
+        [ ] cleanup
+    ] call ; inline
+
+<PRIVATE
+
+: first-port ( quot -- n/f )
+    [ threaded-server get servers>> ] dip
+    filter [ f ] [ first addr>> port>> ] if-empty ; inline
+
+PRIVATE>
+
+: secure-port ( -- n/f ) [ addr>> secure? ] first-port ;
+
+: insecure-port ( -- n/f ) [ addr>> secure? not ] first-port ;
 
-M: integer port ;
+: server. ( threaded-server -- )
+    [ [ "=== " write name>> ] [ ] bi write-object nl ]
+    [ servers>> [ addr>> present print ] each ] bi ;
 
-M: object port port>> ;
+: all-servers ( -- sequence )
+    running-servers get-global members ;
 
-: secure-port ( -- n )
-    threaded-server get dup [ secure>> port ] when ;
+: servers. ( -- )
+    all-servers [ server. ] each ;
 
-: insecure-port ( -- n )
-    threaded-server get dup [ insecure>> port ] when ;
+: stop-all-servers ( -- )
+    all-servers [ stop-server ] each ;
index d91e31cca22875a58f119b3a864d72674fbb74b3..6c3094fe2217e43b27a7eee36f8738d4a35071f5 100644 (file)
@@ -1,8 +1,10 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: io.encodings.ascii io.files io.files.unique kernel
-mime.multipart tools.test io.streams.duplex io multiline
-assocs accessors ;
+USING: accessors assocs continuations fry http.server io
+io.encodings.ascii io.files io.files.unique
+io.servers.connection io.streams.duplex io.streams.string
+kernel math.ranges mime.multipart multiline namespaces random
+sequences strings threads tools.test ;
 IN: mime.multipart.tests
 
 : upload-separator ( -- seq )
@@ -33,3 +35,22 @@ IN: mime.multipart.tests
     "file1" swap at filename>> "up.txt" =
 ] unit-test
 
+SYMBOL: mime-test-server
+
+: with-test-server ( quot -- )
+    [
+        <http-server>
+            f >>secure
+            0 >>insecure
+    ] dip with-threaded-server ; inline
+
+: test-server-port ( -- n )
+    mime-test-server get insecure>> ;
+
+: a-stream ( n -- stream )
+    CHAR: a <string> <string-reader> ;
+
+[ ] [
+    [
+    ] with-test-server
+] unit-test
index 7a505ca9574bd6cb29250f9daeed5e0b60184c35..d36a855842aecee1f861409b9c94ff0aa1e89e8a 100644 (file)
@@ -68,7 +68,7 @@ M: quit-responder call-responder*
         <http-server>
             0 >>insecure
             f >>secure
-        dup start-server*
+        start-server
         sockets>> first addr>> port>>
         dup number>string "resource:temp/port-number" ascii set-file-contents
     ] with-scope
index 8a2e35318d311abbded106f55028b74d41767b60..a8007bd858756f107d4d8c69100531faf71cff42 100644 (file)
@@ -24,7 +24,7 @@ IN: fuel.remote
 PRIVATE>
 
 : fuel-start-remote-listener ( port/f -- )
-    print-banner integer? [ 9000 ] unless* server start-server ;
+    print-banner integer? [ 9000 ] unless* server start-server drop ;
 
 : fuel-start-remote-listener* ( -- ) f fuel-start-remote-listener ;
 
index 897d5ae155987b85f604343d9a46633f822d0083..935c1ee868436b31a8ebcd4f6a7baa01cfc58cff 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors calendar calendar.format io io.encodings.ascii
-io.servers.connection threads ;
+io.servers.connection kernel threads ;
 IN: time-server
 
 : handle-time-client ( -- )
@@ -14,6 +14,6 @@ IN: time-server
         [ handle-time-client ] >>handler ;
 
 : start-time-server ( -- )
-    <time-server> start-server ;
+    <time-server> start-server drop ;
 
 MAIN: start-time-server
index 0c7395f7f070d73efafd4bcca2bef9b83b58d7a6..24fadef5bf8bc157120cf91e534aa6ca5fb9053c 100644 (file)
@@ -7,7 +7,7 @@ IN: tty-server
         "tty-server" >>name
         swap local-server >>insecure
         [ listener ] >>handler
-    start-server ;
+    start-server drop ;
 
 : tty-server ( -- ) 9999 <tty-server> ;
 
index a8c8383e628c3f633e46f1ab7e75f2fb8db4176e..95f48109b1210489f181e02c0de503917887908a 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: furnace furnace.actions furnace.redirection
 http.server.dispatchers html.forms validators urls accessors
-math ;
+math kernel ;
 IN: webapps.calculator
 
 TUPLE: calculator < dispatcher ;
@@ -39,6 +39,6 @@ USING: db.sqlite furnace.alloy namespaces http.server ;
     <calculator>
         calculator-db <alloy>
         main-responder set-global
-    8080 httpd ;
+    8080 httpd drop ;
 
 MAIN: run-calculator
index 2fa9b5fb1d5e501f3d46837b5a1d4f20c0f31ae7..a2a3d73ff6c29128e8d85733a29bec55f0c1cb5e 100644 (file)
@@ -38,6 +38,6 @@ USING: db.sqlite furnace.alloy namespaces ;
     <counter-app>
         counter-db <alloy>
         main-responder set-global
-    8080 httpd ;
+    8080 httpd drop ;
 
 MAIN: run-counter
index c2ae0f852076ba64257254f189b3c3f20f184644..d2bd1ecea70fff466f6e1575cb05a6bc7d856fd6 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors furnace.actions http.server
 http.server.dispatchers html.forms io.sockets
-namespaces prettyprint ;
+namespaces prettyprint kernel ;
 IN: webapps.ip
 
 TUPLE: ip-app < dispatcher ;
@@ -18,6 +18,6 @@ TUPLE: ip-app < dispatcher ;
 
 : run-ip-app ( -- )
     <ip-app> main-responder set-global
-    8080 httpd ;
+    8080 httpd drop ;
 
 MAIN: run-ip-app
index 5ecd3bc6a8c0fb35eef5259e9de839ae0ca9dcc1..05fabfcf9dd3d19bb5ce024970d446e7c419785a 100644 (file)
@@ -90,4 +90,4 @@ M: site-watcher-app init-user-profile
 : start-site-watcher ( -- )
     init-db
     site-watcher-db run-site-watcher
-    <site-watcher-server> start-server ;
+    <site-watcher-server> start-server drop ;
index 4f6edee03121130a3b005961bb76f47727e73c7a..e5753f3c538f9d86899ac10d046e835b57c88bf8 100644 (file)
@@ -162,6 +162,6 @@ io.sockets.secure ;
 : run-todo ( -- )
     <todo-app> main-responder set-global
     todo-db start-expiring
-    <todo-website-server> start-server ;
+    <todo-website-server> start-server drop ;
 
 MAIN: run-todo
index 79da05b8cb6988e5a0ba4e4e702c3523a1d39d75..35e4150ba9cd7af5a3a5eaf7f53dcc3629306ef3 100644 (file)
@@ -125,7 +125,7 @@ SYMBOL: dh-file
         8080 >>insecure
         8431 >>secure ;
 
-: start-website ( -- )
+: start-website ( -- server )
     test-db start-expiring
     test-db start-update-task
     http-insomniac