Hi jeffrey, perhaps it might save you a bit of trouble. i've written a publish/subscribe event channel that seems to have must of the functionality listed below although it does use the techniques that you wanted to avoid. its at http://www.zope.org/Members/k_vertigo/Products/EventChannel
at the moment its purposefully a simple publish subscribe model with filters. object references are stored via physical path and resolved via unrestrictedTraverse. On Thursday 03 January 2002 04:49 pm, Jeffrey P Shell wrote: > I'm experimenting with an event notification service based on a > publish-subscribe model for some projects I'm working on. When a > subscription comes in, a 'Subscription' object is made, that > basically looks like this: > > class Subscription(Base): > def __init__(self, subscriber, eventType, filter=None): > self.subscriber = subscriber > self.eventType = eventType > self.filter = filter > > def __hash__(self): > return hash(self.subscriber) & \ > hash(self.eventType) & \ > hash(self.filter) > > 'subscriber' is a reference to the subscribing object, and it's > very likely to be to an object in the ZODB. Is it wise to have > more than one persistent reference to a single persistent object? > I swear that I had once heard Jim say (vocally) that you could do > references like this in the ZODB now. I'm trying to avoid using > Paths because objects have a tendency to move around[*], and I have > performance concerns for a single event service object to have to > call 'unrestrictedTraverse' to every subscriber. yes, this a concern and depends on usage. i generally don't have many listeners to a particular event. when this has been an issue, i instead chain event channels and stick events in an event queue, which periodically gets flushed from a zeo client script. currently i'm doing this for a subscription model which works well since the subscriptions that way get sent out all at once, instead of bombarding the end user with lots of emails. > [*] (it's due to the annoyances with manage_beforeDelete() and > friends that > I'm writing this tool.) > > Second question: If I use the hash of the Subscription as a key, is > there any advantages/disadvantages with using an IOBTree to hold > Subscription objects instead of a PersistentMapping? memory usage would probably be an advantage over large numbers of subscriptions, but i'm not qualifed to answer... cheers kapil _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )