summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2018-01-29 15:26:06 -0500
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-01-31 19:06:55 +0000
commit57255f653bd9696cefc570de80fbde1c56eee17e (patch)
tree9be0952d206e518e7db797478f6f4f716c880895
parent45271cbd62867e2011e288472cd86bfab56c5cbd (diff)
downloadphosphor-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.py35
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=[]):
OpenPOWER on IntegriCloud