[cells-devel] the cells way

Andy Chambers achambers.home at googlemail.com
Wed Aug 13 21:54:06 UTC 2008


Hey,

In openair, I'm getting problems with dead instances.  I think its
maybe because I'm working against cells.

What I need to do is keep track somewhere of all the nodes that change
in response to a request.  Currently, this is done using an "update"
slot which we setf on an xhtml observer.

(defobserver xhtml ((self html))
  (when (and new-value
	     (do-send self new-value old-value))
    (trc "new xhtml" new-value)
      (setf (update self)
	    (format nil "$(\"#~a\").replaceWith(\"~a\")" (md-name self)
		    (js-escape new-value)))))

When a new request comes in, we do the following:

  - walk the family tree, setting the update slot to nil.
  - feed the request parameters into the model
  - walk the family tree looking for places where update is not nil
and sending it to the browser

In some cases, that works fine but in others, we find dead cells while
walking the tree the first time.

Another point to note is that the update slot is specified as :cell
nil.  Based on its purpose and usage, does that make sense?

Should I be wrapping this traversal in with-integrity or something?

Cheers,
Andy



More information about the cells-devel mailing list