X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=8sync%2Fsystems%2Fweb.scm;h=82ed4d20985b9c80deab018bdc556866ca424681;hp=dc4fc2ef08da5b172dbf08a7064d331ce5ffba14;hb=e34c7819169a3de5b411a9a423d7f8f3c28435cc;hpb=975da18519fd07539ca94622a7070274a054198d diff --git a/8sync/systems/web.scm b/8sync/systems/web.scm index dc4fc2e..82ed4d2 100644 --- a/8sync/systems/web.scm +++ b/8sync/systems/web.scm @@ -1,10 +1,10 @@ ;;; 8sync --- Asynchronous programming for Guile -;;; Copyright (C) 2017 Christopher Allan Webber +;;; Copyright © 2017 Christopher Allan Webber ;;; ;;; Code (also under the LGPL) borrowed from fibers: -;;; Copyright (C) 2016 Andy Wingo +;;; Copyright © 2016 Andy Wingo ;;; and Guile: -;;; Copyright (C) 2010, 2011, 2012, 2015 Free Software Foundation, Inc. +;;; Copyright © 2010, 2011, 2012, 2015 Free Software Foundation, Inc. ;;; ;;; This file is part of 8sync. ;;; @@ -43,35 +43,37 @@ (host #:init-value #f #:init-keyword #:host - #:getter web-server-host) + #:getter .host) (family #:init-value AF_INET #:init-keyword #:family - #:getter web-server-family) + #:getter .family) (port-num #:init-value 8080 #:init-keyword #:port - #:getter web-server-port-num) + #:getter .port-num) (addr #:init-keyword #:addr - #:accessor web-server-addr) + #:accessor .addr) (socket #:init-value #f - #:accessor web-server-socket) - (handler #:init-keyword #:handler - #:getter web-server-handler)) + #:accessor .socket) + (upgrade #:init-value '() + #:allocation #:each-subclass) + (http-handler #:init-keyword #:http-handler + #:getter .http-handler)) (define-method (initialize (web-server ) init-args) (next-method) ;; Make sure the addr is set up (when (not (slot-bound? web-server 'addr)) - (set! (web-server-addr web-server) - (if (web-server-host web-server) - (inet-pton (web-server-family web-server) - (web-server-host web-server)) + (set! (.addr web-server) + (if (.host web-server) + (inet-pton (.family web-server) + (.host web-server)) INADDR_LOOPBACK))) ;; Set up the socket - (set! (web-server-socket web-server) - (make-default-socket (web-server-family web-server) - (web-server-addr web-server) - (web-server-port-num web-server))) + (set! (.socket web-server) + (make-default-socket (.family web-server) + (.addr web-server) + (.port-num web-server))) ;; This is borrowed from Guile's web server. ;; Andy Wingo added the line with this commit: @@ -102,7 +104,7 @@ "The main loop on our socket. Keep accepting new clients as long as we're alive." (while #t - (match (accept (web-server-socket web-server)) + (match (accept (.socket web-server)) ((client . sockaddr) ;; From "HOP, A Fast Server for the Diffuse Web", Serrano. (setsockopt client SOL_SOCKET SO_SNDBUF (* 12 1024)) @@ -171,14 +173,14 @@ as we're alive." (define (web-server-handle-request web-server message request body) (receive (response body) - ((web-server-handler web-server) request body) + ((.http-handler web-server) request body) (receive (response body) (sanitize-response request response body) (<-reply message response body)))) (define (web-server-cleanup web-server message) ;; @@: Should we close any pending requests too? - (close (web-server-socket web-server))) + (close (.socket web-server))) (define (web-server-shutdown web-server message) (self-destruct web-server))