On Jun 2, 2005, at 4:58 PM, Phillip J. Eby wrote:

At 04:12 PM 6/2/2005 -0700, John Anderson wrote:

Phillip J. Eby wrote:

At 01:54 PM 6/2/2005 -0700, Ted Leung wrote:

On Jun 2, 2005, at 1:38 PM, John Anderson wrote:

Phillip J. Eby wrote:

I'm wondering about the "post(sourceItem, targetItem, methodName,
Event)" API; wouldn't it be simpler just to pass a callable, i.e.
"post(sourceItem, targetItem.someMethod, event)"?

If I'm not mistaken, this information needs to persist and I don't
think the repository has a datatype that persists a callable.

Yes, persistence is the reason.

Okay, I missed that bit, probably because it's not really tied in to the rest of the spec. Why is it persistent? How does that relate to the use cases there? I didn't get that part at all. In what view(s) is the event invoked?


If it's persistent it's simpler


Not if the need for notification is dependent upon the recipient's visual state. For example, the detail view only needs notification about a particular item, and only while it's displaying it. So persistence in that case isn't "simpler".

The current version of the spec doesn't try to solve the detail view problem. However, Phillip reminded me that we had talked about a Value Model based solution to this problem, and I've been looking at some documentation on Value Models <http://c2.com/ppr/vmodels.html> to see whether this would be better than having the detail view/ attribute editors use monitors.

 -- both because of how items work, and
because you don't need to add and maintain code that initializes it when
Chandler starts.


It's not clear in the spec that the proposed notification system needs this. For example, for a union of two sets, a pull-based notification system would only need to ask its two downstream sets for changes since its last update. It doesn't need to be notified of every change to those two sets, unless there's something expecting immediate notifications from it.

Right now, what I proposed is a hybrid push/pull approach, where notifications are pushed into a queue and then released by a trigger (which happens to be in the idle loop). This is conceptually similar to a BufferedValueHolder in a Value Model oriented view of the world. Given that hybrid approach, we would still need to initialize the structure of the notification network. However, I'm somewhat unhappy with this part of the design because of some of the discussions that Phillip and I had last month, and I'm open to being convinced to a different spot in the design space.

Ted

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to