-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.lisp
44 lines (31 loc) · 1.2 KB
/
server.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(in-package :easyweb)
(defstruct (easy-starter)
"Easy Starter"
acceptor
applications)
(defparameter *acceptor-table* (make-hash-table :test #'equal)
"Defined acceptors are kept.")
(defparameter *listen-address* nil
"Listens connections from this address, if nil all ip address will be listened.")
(defparameter *listen-port* 8000)
(defparameter *httpd* nil)
(defparameter *swank-port* 4991)
;;start swank server
;;(defparameter *swank*
;; (swank:create-server :port *swank-port* :dont-close t))
(defun easy-starter-hash (address port)
(format nil "~A" (cons address port)))
(defun get-easy-starter (&key (port *listen-port*) (address *listen-address*))
(let ((key (easy-starter-hash address port)))
(or (gethash key *acceptor-table*)
(setf (gethash key *acceptor-table*)
(make-easy-starter :acceptor (make-instance 'hunchentoot:acceptor
:address address
:port port
:name key))))))
;(defmethod get-easy-starter (acceptor-name)
; (gethash acceptor-name *acceptor-table*))
(defun get-acceptor (&key (port *listen-port*) (address *listen-address*))
(let ((starter (get-easy-starter address port)))
(when starter
(easy-starter-acceptor starter))))