TUPLE: threaded-server name log-level secure insecure secure-config sockets max-connections semaphore timeout encoding handler ready ; : new-threaded-server ( encoding class -- threaded-server ) new swap >>encoding "server" >>name DEBUG >>log-level 1 minutes >>timeout V{ } clone >>sockets >>secure-config [ "No handler quotation" throw ] >>handler >>ready ; inline TUPLE: managed-server < threaded-server clients ; : new-managed-server ( port name encoding class -- server ) new-threaded-server swap >>name swap >>insecure f >>timeout H{ } clone >>clients ; inline TUPLE: chat-server < managed-server ; : ( port -- managed-server ) "chat-server" utf8 chat-server new-managed-server ; ----------------- TUPLE: threaded-server { name initial: "server" } { log-level initial: DEBUG } secure insecure { secure-config initial-quot: [ ] } { sockets initial-quot: [ V{ } clone ] } max-connections semaphore { timeout initial-quot: [ 1 minutes ] } encoding { handler initial: [ "No handler quotation" throw ] } { ready initial-quot: [ ] } ; CONSTRUCTOR: threaded-server ( encoding -- obj ) ; TUPLE: managed-server < threaded-server { clients initial-quot: [ H{ } clone ] } { timeout initial: f } ; CONSTRUCTOR: managed-server ( insecure name encoding -- server ) ; TUPLE: chat-server < managed-server { name initial: "chat-server" } { encoding initial: utf8 } ; CONSTRUCTOR: chat-server ( insecure -- obj ) ;