[PATCH phosphor-objmgr 1/2] Discard existing interfaces
Joel Stanley
joel at jms.id.au
Fri Feb 5 16:14:40 AEDT 2016
On Fri, Feb 5, 2016 at 7:50 AM, OpenBMC Patches
<openbmc-patches at stwcx.xyz> wrote:
> From: Brad Bishop <bradleyb at us.ibm.com>
>
> Avoid the need for syncronization between the mapper and services
> emitting interfaces added signals by discarding interfaces that have
> already been discovered. This can happen when ia service emits the
> interfaces added signal in quick sucession to the name owner changed
> signal, and the mapper discovers the new interface while handling
> the name owner changed signal.
Reviewed-by: Joel Stanley <joel at jms.id.au>
> ---
> phosphor-mapper | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/phosphor-mapper b/phosphor-mapper
> index f5b1def..da4ae63 100644
> --- a/phosphor-mapper
> +++ b/phosphor-mapper
> @@ -70,9 +70,7 @@ class ObjectMapper(dbus.service.Object):
> return
>
> matches = [ x for x in iprops.iterkeys() if self.intf_match(x) ]
> - d = self.cache.setdefault(path, {})
> - d.setdefault(kw['sender'], []).extend(matches)
> - self.cache[path] = d
> + self.add_interfaces(path, kw['sender'], matches)
>
> def interfaces_removed_handler(self, path, interfaces, **kw):
> name = self.bus.get_owned_name(self.bus_match, kw['sender'])
> @@ -130,9 +128,9 @@ class ObjectMapper(dbus.service.Object):
> self.process_old_owner(old)
>
> def add_interfaces(self, path, owner, interfaces):
> - d = self.cache.setdefault(path, { })
> - d.setdefault(owner, []).extend(interfaces)
> - self.cache[path] = d
> + d = self.cache.setdefault(path, {})
> + d = d.setdefault(owner, [])
> + self.cache[path][owner] = list(set(d + interfaces))
>
> def add_items(self, owner, bus_items):
> for x,y in bus_items.iteritems():
> --
> 2.6.4
>
>
> _______________________________________________
> openbmc mailing list
> openbmc at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc
More information about the openbmc
mailing list