diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-01-29 15:26:06 -0500 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-01-31 19:06:55 +0000 |
commit | 57255f653bd9696cefc570de80fbde1c56eee17e (patch) | |
tree | 9be0952d206e518e7db797478f6f4f716c880895 | |
parent | 45271cbd62867e2011e288472cd86bfab56c5cbd (diff) | |
download | phosphor-objmgr-57255f653bd9696cefc570de80fbde1c56eee17e.tar.gz phosphor-objmgr-57255f653bd9696cefc570de80fbde1c56eee17e.zip |
server: Serve well-known bus names
Prior to this patch the mapper served unique connection
names. Serve well-known names instead so clients can
cache mapper lookup results.
Tested: Manually verified mapper content and signals in the
following workflows:
- Service discovery
- Interface added post discovery
- Interface removed post discovery
- Bus disconnect post discovery
- Bus connect post discovery
- Association added post discovery
- Association removed post discovery
- Association modified post discovery
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: Ia697c86dc287b6e289ea6d84364b24ef9a2c18c8
-rw-r--r-- | obmc/mapper/server.py | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py index 11e93ed..aa4c1e3 100644 --- a/obmc/mapper/server.py +++ b/obmc/mapper/server.py @@ -206,10 +206,8 @@ class ObjectMapper(dbus.service.Object): self.service = None self.index = {} self.manager = Manager(bus, obmc.dbuslib.bindings.OBJ_PREFIX) - self.unique = bus.get_unique_name() self.bus_map = {} self.defer_signals = {} - self.bus_map[self.unique] = obmc.mapper.MAPPER_NAME self.namespaces = namespaces self.interface_namespaces = interface_namespaces self.blacklist = blacklist @@ -217,7 +215,8 @@ class ObjectMapper(dbus.service.Object): self.interface_blacklist = interface_blacklist # add my object mananger instance - self.add_new_objmgr(obmc.dbuslib.bindings.OBJ_PREFIX, self.unique) + self.add_new_objmgr( + obmc.dbuslib.bindings.OBJ_PREFIX, obmc.mapper.MAPPER_NAME) self.bus.add_signal_receiver( self.bus_handler, @@ -276,9 +275,7 @@ class ObjectMapper(dbus.service.Object): # since it cannot contain the discovery_error frame. exctype, value, tb = sys.exc_info() sys.stderr.write( - '{} discovery failure on {}\n'.format( - self.bus_map.get(owner, owner), - path)) + '{} discovery failure on {}\n'.format(owner, path)) if tb: traceback.print_exception(exctype, value, tb, file=sys.stderr) else: @@ -308,8 +305,8 @@ class ObjectMapper(dbus.service.Object): def interfaces_added_handler(self, path, iprops, **kw): path = str(path) - owner = str(kw['sender']) - if not self.bus_normalize(owner): + owner = self.bus_normalize(str(kw['sender'])) + if not owner: return interfaces = self.filter_signal_interfaces(iter(iprops.keys())) if not interfaces: @@ -330,8 +327,8 @@ class ObjectMapper(dbus.service.Object): def interfaces_removed_handler(self, path, interfaces, **kw): path = str(path) - owner = str(kw['sender']) - if not self.bus_normalize(owner): + owner = self.bus_normalize(str(kw['sender'])) + if not owner: return interfaces = self.filter_signal_interfaces(interfaces) if not interfaces: @@ -350,9 +347,9 @@ class ObjectMapper(dbus.service.Object): path, interfaces, **kw)) def properties_changed_handler(self, interface, new, old, **kw): - owner = str(kw['sender']) + owner = self.bus_normalize(str(kw['sender'])) path = str(kw['path']) - if not self.bus_normalize(owner): + if not owner: return interfaces = self.filter_signal_interfaces([interface]) if not self.is_association(interfaces): @@ -388,10 +385,10 @@ class ObjectMapper(dbus.service.Object): del self.bus_map[owner] for path, item in self.cache.dataitems(): - old = self.interfaces_get(item, owner) + old = self.interfaces_get(item, owned_name) # remove all interfaces for this service self.update_interfaces( - path, owner, old=old, new=[]) + path, owned_name, old=old, new=[]) def bus_handler(self, owned_name, old, new): if obmc.dbuslib.bindings.is_unique(owned_name) or \ @@ -403,8 +400,8 @@ class ObjectMapper(dbus.service.Object): if old: # discard any unhandled signals # or in progress discovery - if old in self.defer_signals: - del self.defer_signals[old] + if owned_name in self.defer_signals: + del self.defer_signals[owned_name] self.process_old_owner(owned_name, old) @@ -489,9 +486,9 @@ class ObjectMapper(dbus.service.Object): if not self.bus_normalize(owned_name): continue self.bus_map[o] = owned_name - self.defer_signals[o] = [] + self.defer_signals[owned_name] = [] find_dbus_interfaces( - self.bus, o, '/', + self.bus, owned_name, '/', self.discovery_callback, self.discovery_error, subtree_match=self.path_match, @@ -688,7 +685,7 @@ class ObjectMapper(dbus.service.Object): if create != delete: self.update_interfaces( - path, self.unique, delete, create) + path, obmc.mapper.MAPPER_NAME, delete, create) def update_associations( self, path, owner, old, new, created=[], destroyed=[]): |