;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Dec 2002
;;;;
-;;;; $Id: base.lisp,v 1.9 2003/07/09 19:19:19 kevin Exp $
+;;;; $Id: base.lisp,v 1.10 2003/07/10 18:58:29 kevin Exp $
;;;; *************************************************************************
(in-package #:modlisp)
-(defun modlisp-start (&key (port +default-apache-port+)
- (processor 'demo-apache-command-processor)
+(defun modlisp-start (&key (port +default-modlisp-port+)
+ (processor 'demo-modlisp-command-processor)
(processor-args nil)
(catch-errors t))
(let ((listener (make-instance 'listener :port port
:base-name "modlisp"
- :function 'apache-command-issuer
+ :function 'modlisp-command-issuer
:function-args (cons processor processor-args)
:format :text
:wait nil
(defun modlisp-stop-all ()
(stop-all/listener))
+;; Internal functions
-(let ((*number-server-requests* 0)
- (*number-worker-requests* 0)
- (*close-apache-socket* t))
-
- (defun apache-command-issuer (*apache-socket* processor &rest args)
- "generates commands from apache, issues commands to processor-fun"
- (unwind-protect
- (progn
- (setq *number-worker-requests* 0)
- (do ((command (read-apache-command) (read-apache-command)))
+(defun modlisp-command-issuer (*modlisp-socket* processor &rest args)
+ "generates commands from modlisp, issues commands to processor-fun"
+ (unwind-protect
+ (progn
+ (let ((*number-worker-requests* 0)
+ (*close-modlisp-socket* t))
+ (do ((command (read-modlisp-command) (read-modlisp-command)))
((null command))
(apply processor command args)
- (force-output *apache-socket*)
+ (force-output *modlisp-socket*)
(incf *number-worker-requests*)
(incf *number-server-requests*)
- (when *close-apache-socket*
- (return))))
- (close-active-socket *apache-socket*)))
-
-
- (defun get-number-worker-requests ()
- *number-worker-requests*)
-
- (defun get-number-server-requests ()
- *number-server-requests*)
-
- (defun set-close-apache-socket (close?)
- (setq *close-apache-socket* close?))
+ (when *close-modlisp-socket*
+ (return)))))
+ (close-active-socket *modlisp-socket*)))
- ) ;; closure
-
(defun header-value (header key)
+ "Returns the value of a modlisp header"
(cdr (assoc key header :test #'string=)))
-(defun read-apache-command ()
+(defun read-modlisp-command ()
(ignore-errors
- (let* ((header (read-apache-header))
+ (let* ((header (read-modlisp-header))
(content-length (header-value header "content-length"))
(content (when content-length
(make-string
(parse-integer content-length :junk-allowed t)))))
(when content
- (read-sequence content *apache-socket*)
+ (read-sequence content *modlisp-socket*)
(push (cons "posted-content" content) header))
header)))
-(defun read-apache-line ()
+(defun read-modlisp-line ()
(kmrcl:string-right-trim-one-char
#\return
- (read-line *apache-socket* nil nil)))
+ (read-line *modlisp-socket* nil nil)))
-(defun read-apache-header ()
- (loop for key = (read-apache-line)
+(defun read-modlisp-header ()
+ (loop for key = (read-modlisp-line)
while (and key
(string-not-equal key "end")
(> (length key) 1))
- for value = (read-apache-line)
+ for value = (read-modlisp-line)
collect (cons key value)))
(defun write-header-line (key value)
- (write-string key *apache-socket*)
- (write-char #\NewLine *apache-socket*)
- (write-string value *apache-socket*)
- (write-char #\NewLine *apache-socket*))
+ (write-string key *modlisp-socket*)
+ (write-char #\NewLine *modlisp-socket*)
+ (write-string value *modlisp-socket*)
+ (write-char #\NewLine *modlisp-socket*))