Hello, I have implemented a NotificationCenter class similar to the one available on the MacOSX foundation library (rooted back in the NeXT NSFoundation library).
The NotificationCenter allows loosely binding between notifying objects and listeners, and it is included in the open source crypto library we have released as part of our project. There is no documentation, but the code should be quite clean, and there are some automatic tests where you should get some ideas on how to use it. For any other question, feel free to contact me. You can find the library here: - http://code.google.com/p/clipperz If you are interested on our project, you can find all the details here: - http://www.clipperz.com Hope this helps. Regards, Giulio Cesare On Nov 15, 2007 12:30 PM, Zsolt <[EMAIL PROTECTED]> wrote: > > I needed the ability to have two or more objects of the same type talk > to each other and respond to each others events. For example when one > gets updated the other one should also do something. My first thought > was to use MochiKit.Signal.signal but that needs a source as a first > arg so that is not good because i do not know the name of the other > object so i modified signal and came up with > > MochiKit.Base.update(MochiKit.Signal,{ > 'signalAll' : function(sig){ > var self= MochiKit.Signal; > var observers = self._observers; > var args = MochiKit.Base.extend(null, arguments, 1); > var errors = []; > self._lock = true; > for (var i = 0; i < observers.length; i++) { > var ident = observers[i]; > if (ident.signal === sig && ident.connected) { > try { > ident.listener.apply(ident.source, args); > } catch (e) { > errors.push(e); > } > } > } > self._lock = false; > if (self._dirty) { > self._dirty = false; > for (var i = observers.length - 1; i >= 0; i--) { > if (!observers[i].connected) { > observers.splice(i, 1); > } > } > } > if (errors.length == 1) { > throw errors[0]; > } else if (errors.length > 1) { > var e = new Error("Multiple errors thrown in handling > 'sig', see errors property"); > e.errors = errors; > throw e; > } > } > }); > > Basicly you can now just call MochiKit.Signal.signalAll('onupdate'); > and every object connected to that signal will get notified. > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "MochiKit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/mochikit?hl=en -~----------~----~----~----~------~----~------~--~---
