Ok, so I am still trying to find out why the handler slot of the web app is always NIL.
That's what I get after creating the instance with make-instance:
0> 72657 *** BINGO request !!! #<tbnl::request @ #x10cadc6a> "/ht- monitor" "/ht-monitor" openair::ht-monitor 0> 0 *** Entering page handling ... 0> 0 creating new web-app... 0> 0 ROOT = web-app6 WEB-APP6 is an instance of #<STANDARD-CLASS OPENAIR::WEB-APP>: The following slots have :INSTANCE allocation: .MD-STATE :NASCENT .AWAKEN-ON-INIT-P NIL .CELLS ((OPENAIR::HANDLER . ) (OPENAIR::RESOURCE . ) (OPENAIR::UPDATES . ) (OPENAIR::MESSAGE . ) (OPENAIR::REQUEST . ) (CELLS:.KIDS . )) .CELLS-FLUSHED NIL ADOPT-CT 0 .MD-NAME WEB-APP6 .FM-PARENT NIL .VALUE NIL ZDBG NIL .KID-SLOTS NIL .KIDS NIL PREFIX "/ht-monitor" REQUEST NIL MESSAGE NIL UPDATES NIL RESOURCE NIL HANDLER NIL
Now, as we can see, the .MD-STATE is :NASCENT - so Cell's machinery hasn't done its job conpletely yet...
Kenny, how can we force Cells to finish its business ?! Or is there any other way to do this?
Thanks for any help! (see below for the full function)
Best, Frank
-X- CODE -X-
(defun ht-monitor-page (prefix resource-class) (lambda (request) (trc "*** BINGO request !!!" request (script-name request) prefix resource-class)
;; New here: only go into the actual function if we are really meant ... (let ((mismatch (mismatch (script-name request) prefix :test #'char=))) (and (or (null mismatch) (>= mismatch (length prefix))) (progn (trc "*** Entering page handling ...") (start-session) (let ((root (or (bwhen (r (session-value 'root)) (trc "clearing updates on re-used root!!!!!!!" r) (with-integrity () (setf (updates r) nil)) r) (progn (trc "creating new web-app...") (mk-web-app (:prefix prefix :request (c-in nil)) (make-instance resource-class :fm-parent *parent*)))))) (trc "ROOT = " root) (describe root) (setf (session-value 'root) root) (setf (request root) request) (assert (handler root)) (trc "Handler is: " (describe (handler root))) (handler root)))))))