mirror of
https://github.com/vale981/lack
synced 2025-03-06 01:41:39 -05:00
Add thread-support to lackup.
This commit is contained in:
parent
1e58de2f84
commit
5cae3bc030
2 changed files with 29 additions and 12 deletions
|
@ -3,6 +3,8 @@
|
||||||
(:use :cl)
|
(:use :cl)
|
||||||
(:import-from :lack.util
|
(:import-from :lack.util
|
||||||
:find-package-or-load)
|
:find-package-or-load)
|
||||||
|
(:import-from :bordeaux-threads
|
||||||
|
:make-thread)
|
||||||
(:export :run
|
(:export :run
|
||||||
:stop))
|
:stop))
|
||||||
(in-package :lack.handler)
|
(in-package :lack.handler)
|
||||||
|
@ -20,15 +22,22 @@
|
||||||
(error "~S is unknown handler."
|
(error "~S is unknown handler."
|
||||||
server))))
|
server))))
|
||||||
|
|
||||||
(defun run (app server &rest args)
|
(defun run (app server &rest args &key use-thread &allow-other-keys)
|
||||||
(let ((handler-package (find-handler server)))
|
(let ((handler-package (find-handler server)))
|
||||||
(make-handler
|
(flet ((run-server ()
|
||||||
:server server
|
(apply (intern #.(string '#:run) handler-package)
|
||||||
:acceptor
|
app
|
||||||
(apply (intern #.(string '#:run) handler-package)
|
:allow-other-keys t
|
||||||
app
|
args)))
|
||||||
:allow-other-keys t
|
(make-handler
|
||||||
args))))
|
:server server
|
||||||
|
:acceptor (if use-thread
|
||||||
|
(bt:make-thread #'run-server
|
||||||
|
:name (format nil "lack-handler-~(~A~)" server)
|
||||||
|
:initial-bindings
|
||||||
|
`((*standard-output* . ,*standard-output*)
|
||||||
|
(*error-output* . ,*error-output*)))
|
||||||
|
(run-server))))))
|
||||||
|
|
||||||
(defun stop (handler)
|
(defun stop (handler)
|
||||||
(let ((acceptor (handler-acceptor handler)))
|
(let ((acceptor (handler-acceptor handler)))
|
||||||
|
|
|
@ -17,8 +17,16 @@
|
||||||
&key (server :hunchentoot)
|
&key (server :hunchentoot)
|
||||||
(port 5000)
|
(port 5000)
|
||||||
(debug t)
|
(debug t)
|
||||||
|
(use-thread #+thread-support t #-thread-support nil)
|
||||||
&allow-other-keys)
|
&allow-other-keys)
|
||||||
(apply #'lack.handler:run app server
|
(flet ((start-message ()
|
||||||
:port port
|
(format t "~&~:(~A~) server is started.~%Listening on localhost:~A.~%" server port)))
|
||||||
:debug debug
|
(unless use-thread
|
||||||
(delete-from-plist args :server :use-thread :port :debug)))
|
(start-message))
|
||||||
|
(prog1
|
||||||
|
(apply #'lack.handler:run app server
|
||||||
|
:port port
|
||||||
|
:debug debug
|
||||||
|
:use-thread use-thread
|
||||||
|
(delete-from-plist args :server :port :debug :use-thread))
|
||||||
|
(start-message))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue