[Dev] Action items from collections code/design review
Ted Leung
twl at osafoundation.org
Mon Sep 19 14:59:26 PDT 2005
On Sep 19, 2005, at 1:56 PM, Alec Flett wrote:
> Also, didn't we talk about a unified notification API that sits on
> top of the Monitors/watchers/notifications with similar callbacks
> and all that sort of thing?
The first action item on the wiki page says cleaned up notification
API...
>
> The way I was imagining this was a singleton notification manager
> class that has a single entrypoint for notification registration.
> It would also be responsible for queuing up notifications, and
> would have a method that "fires" these notifications that could be
> called from an OnIdle loop.
>
> What's nice is that asynchronous notifications could be handled all
> in one place, and it would be up to the front end's event loop to
> call the method that "fires" the notifications, so all the
> notifications would originate in the same place.
Something like this is definitely what I was thinking of.
>
> It would hopefully (if this isn't too ambitious) persist the async
> notification list, and rely on the other subscription mechanisms
> (like Monitors) to persist synchronous notification lists.
>
> Here's some strawman code to get us started that uses Monitors and
> Collection subscribers
>
>
> class NotificationManager(...):
> def QueueAsyncNotification(self, realTarget,
> realTargetMethod, ....):
>
> def FireIdleNotifications(self, ...):
>
> def RegisterCallback(self, targetItem, methodName, item=None,
> attribute=None, synchronous=True):
> if item is None:
> if synchronous and attribute is not None:
> Monitors.attach(target, methodName, 'set', attribute)
> elsif isinstance(item, AbstractCollection):
> if synchronous:
> item.subscribers.add((targetItem, methodName))
> else:
> item.subscribers.add((self,
> 'QueueAsyncNotification', ..))
>
>
> Now you could say
> notificationManager.RegisterCallback(self, 'onMyCollectionChanged',
> mycollection)
>
> Obviously there are lots of combinations of item/attribute/
> synchronous that we need to address here.. persisting asynchronous
> callbacks is going to be tricky. We'd also need API changes (like
> that change to AbstractCollection.subscribers) and callback
> parameter unification, but its a start. What do people think?
One question is do we really need a class or could we do with module
variables/functions? When you say persisting asynchronous
callbacks, do you mean persisting the subscriptions? Persisting the
actual callback code? Or persisting unconsumed notifications?
Ted
>
> Alec
>
> Ted Leung wrote:
>> The action items that we agreed on at the collections code/design
>> review are here: <http://wiki.osafoundation.org/bin/view/Journal/
>> TedLeung20050912>
>>
>> One of the items is to move away from use of onValueChanged and
>> go back to using constructors for creating various collection
>> kinds. Unfortunately, this
>> means that we wouldn't be able to use update to change existing
>> instances in the repository. So we can't remove the
>> onValueChanged stuff, so it doesn't
>> make sense to duplicate the code in the collection item
>> constructors. So I'm just going to leave the code the way that it
>> is now.
>>
>> Ted
>>
>>
>>
>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>>
>> Open Source Applications Foundation "Dev" mailing list
>> http://lists.osafoundation.org/mailman/listinfo/dev
>
----
Ted Leung Open Source Applications Foundation (OSAF)
PGP Fingerprint: 1003 7870 251F FA71 A59A CEE3 BEBA 2B87 F5FC 4B42
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osafoundation.org/pipermail/dev/attachments/20050919/04bd9b19/attachment.htm
More information about the Dev
mailing list