On 07/16/2013 10:32 PM, Joseph Scheuhammer wrote: > Hi Alejandro, > > Thanks for your input. >> In any case, another pov for the same question would be: is there any >> advantage on each client having their own instance of the tracker? >> Because if there isn't any advantage, having this as a singleton have >> the memory advantage of maintaining just one reference. Probably that is >> a small advantage, but if having one instance per client have zero >> advantages, the singleton option is still winning 1-0. > > The main advantage of each client having their own copy of the tracker > is that there is no need to worry about accidentally deregistering the > events with atspi. With the singleton approach, the tracker has to > note the number of clients connected to it, and (perhaps) deregister > when no more clients are connected. Put concretely, when a client is > no longer interested in the tracker's signals, the client calls the > tracker's disconnect() method. When there are no more connections, > then the tracker can safely dereigster with atspi. > > On the non-singleton design, the tracker does not have to manage this > since there is only one client connected to it. The logic is somewhat > simpler. When the client is done, the deregistration for that > client's instance of the tracker can be automatic. I'm actually > leaning towards this approach now, since the complexity associated > with the singleton design may be an example of the anti-pattern you > noted, "Accidental complexity".
Ok, in that sense it is true that the non-singleton option have advantages. As far as I see, with the information we have right now, the non-singleton option is the most sensible (and simpler one). I agree that the most sensible is the non-singleton option. If in the future we found a decisive reason to use a singleton, we can change that if needed. > > On the other hand, with a singleton, the dbus traffic is limited to > one atspi registration (well, actually three, but that's a detail). > With mutliple trackers, there is one atspi registration per tracker. > How costly is that extra dbus traffic? (Probably a Mike question). FWIW, when we talk about problems with DBUS traffic is related with a big amount of events (flood of events) and not about some. For example, in the past it was a problem when a user with a really big amount of music on a USB connected it, and the music player started to add each song to his list, as suddenly the IPC started to flood the computer with "children-changed" signals. AFAIU, we are not going to have hundred or thousands of trackers, so having two or three registration events shouldn't be a problem. As I said the problem is when you have like 100 dbus events per second, for example. > > Still thinking about the rest. However: Ok. > >> In fact, >> doing that is a example of a well known anti-pattern: "Accidental >> complexity" [1] >> >> [1]http://en.wikipedia.org/wiki/Accidental_complexity > > Thanks for the link. :-) > No problem. I'm a expert on anti-patterns, I committed most of them ;) Here you have a full list: http://en.wikipedia.org/wiki/Anti-pattern#Software_engineering BR -- Alejandro Piñeiro Iglesias _______________________________________________ gnome-accessibility-devel mailing list gnome-accessibility-devel@gnome.org https://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel