56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
USING: accessors calendar concurrency.promises fry io
 | 
						|
io.encodings.ascii io.servers
 | 
						|
io.servers.private io.sockets kernel namespaces
 | 
						|
sequences threads tools.test ;
 | 
						|
IN: io.servers
 | 
						|
 | 
						|
{ t } [ ascii <threaded-server> listen-on empty? ] unit-test
 | 
						|
 | 
						|
{ f } [
 | 
						|
    ascii <threaded-server>
 | 
						|
        25 internet-server >>insecure
 | 
						|
    listen-on
 | 
						|
    empty?
 | 
						|
] unit-test
 | 
						|
 | 
						|
{ t } [
 | 
						|
    T{ inet4 f "1.2.3.4" 1234 } T{ inet4 f "1.2.3.5" 1235 }
 | 
						|
    [ log-connection ] 2keep
 | 
						|
    [ remote-address get = ] [ local-address get = ] bi*
 | 
						|
    and
 | 
						|
] unit-test
 | 
						|
 | 
						|
{ } [ ascii <threaded-server> init-server drop ] unit-test
 | 
						|
 | 
						|
{ 10 } [
 | 
						|
    ascii <threaded-server>
 | 
						|
        10 >>max-connections
 | 
						|
    init-server semaphore>> count>>
 | 
						|
] unit-test
 | 
						|
 | 
						|
{ "Hello world." } [
 | 
						|
    ascii <threaded-server>
 | 
						|
        5 >>max-connections
 | 
						|
        0 >>insecure
 | 
						|
        [ "Hello world." write stop-this-server ] >>handler
 | 
						|
    [
 | 
						|
        insecure-addr ascii <client> drop stream-contents
 | 
						|
    ] with-threaded-server
 | 
						|
] unit-test
 | 
						|
 | 
						|
{ } [
 | 
						|
    ascii <threaded-server>
 | 
						|
        5 >>max-connections
 | 
						|
        0 >>insecure
 | 
						|
    start-server [ '[ _ wait-for-server ] in-thread ] [ stop-server ] bi
 | 
						|
] unit-test
 | 
						|
 | 
						|
ipv6-supported? [
 | 
						|
    { f } [
 | 
						|
        ascii <threaded-server>
 | 
						|
            "localhost" 1234 inet boa >>insecure
 | 
						|
        listen-on
 | 
						|
        [ inet6? ] any?
 | 
						|
    ] unit-test
 | 
						|
] unless
 |