session))
(defgeneric send (session string))
-(defgeneric prompt (session minutes btus))
+(defgeneric prompt (session string))
(defgeneric data (session message))
(defvar *empire-session*)
+(defmacro with-session (&body body)
+ `(let ((*empire-session* (session-value 'session)))
+ (if *empire-session*
+ (progn ,@body)
+ (redirect +login-page+))))
+
(defun update ()
"Send stream of updates to client"
(with-session
"Push a javascript update fragment to the client."
(locked-queue:enqueue (update-queue s) string))
-(defmethod prompt ((s session) minutes btus)
- (send s (format nil "prompt(~a,~a);~%" minutes btus)))
+(defmethod prompt ((s session) p)
+ (send s (parenscript:ps* `(prompt ,p))))
(defmethod data ((s session) message)
(send s (parenscript:ps* `(msg ,message))))
-(defmacro with-session (&body body)
- `(let ((*empire-session* (session-value 'session)))
- (if *empire-session*
- (progn ,@body)
- (redirect +login-page+))))
-
;; destination of login-form
(defun login-action ()
(handler-case
- (let ((session (make-session (post-parameter "username")
- (post-parameter "password"))))
+ (let* ((user (post-parameter "username"))
+ (pass (post-parameter "password"))
+ (session (make-session user pass)))
(setf (session-value 'session) session)
+ (empire-log:info "~a: User ~a logging in." session user)
(redirect +root-url+))
(usocket:connection-refused-error (e)
(format nil "Connection error: ~a~%" e))))
(defun command-action ()
(with-session
- (empire:send-message (connection *empire-session*) (get-parameter "q"))))
+ (empire:command (connection *empire-session*) (get-parameter "q"))
+ "ok"))
(defun root-page ()
(with-session
(defun start ()
+ (empire-log:info "Startup")
(pushnew 'dispatch *dispatch-table* :test #'eq))