modify arguments of Dispatcher.announce_update

- 'pname' argument is not needed
- change 'modulename' argument to 'moduleobj'
  (needed for further change)

Change-Id: Ib21f8ad06d9b2be4005ff3513088a85e29785c94
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32744
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
2023-12-11 17:41:56 +01:00
parent adabf5c4b1
commit b4cfd7cd4f
11 changed files with 27 additions and 44 deletions

View File

@@ -348,7 +348,7 @@ class Module(HasAccessibles):
self.attachedModules = {}
self.errors = []
self._isinitialized = False
self.updateCallback = srv.dispatcher.announce_update
self.updateCallback = srv.dispatcher.announce_update
# handle module properties
# 1) make local copies of properties
@@ -549,7 +549,7 @@ class Module(HasAccessibles):
arg = value
pobj.readerror = None
if pobj.export:
self.updateCallback(self.name, pname, pobj)
self.updateCallback(self, pobj)
cblist = callbacks[pname]
for cb in cblist:
try:

View File

@@ -133,6 +133,9 @@ class Attached(Property):
if not modulename:
return None # happens when mandatory=False and modulename is not given
modobj = obj.secNode.get_module(modulename)
if not modobj:
raise ConfigError(f'attached module {self.name}={modulename!r} '
f'does not exist')
if not isinstance(modobj, self.basecls):
raise ConfigError(f'attached module {self.name}={modobj.name!r} '
f'must inherit from {self.basecls.__qualname__!r}')

View File

@@ -81,14 +81,14 @@ class Dispatcher(dispatcher.Dispatcher):
super().__init__(name, log, options, srv)
self.log = srv.log # overwrite child logger
def announce_update(self, modulename, pname, pobj):
def announce_update(self, moduleobj, pobj):
if pobj.readerror:
value = repr(pobj.readerror)
else:
value = pobj.value
logobj = self._modules.get(modulename, self)
logobj = self._modules.get(moduleobj.name, self)
# self.log.info('%s:%s %r', modulename, pname, value)
logobj.log.info('%s %r', pname, value)
logobj.log.info('%s %r', pobj.name, value)
def register_module(self, moduleobj, modulename, export=True):
self.log.info('registering %s', modulename)

View File

@@ -93,10 +93,10 @@ class Dispatcher:
for conn in listeners:
conn.send_reply(msg)
def announce_update(self, modulename, pname, pobj):
def announce_update(self, moduleobj, pobj):
"""called by modules param setters to notify subscribers of new values
"""
self.broadcast_event(make_update(modulename, pobj))
self.broadcast_event(make_update(moduleobj.name, pobj))
def subscribe(self, conn, eventname):
self._subscriptions.setdefault(eventname, set()).add(conn)

View File

@@ -94,6 +94,7 @@ class SecNode:
if modulename in list(self.modules.values()):
# it's actually already the module object
return modulename
# create module from srv.module_cfg, store and return
self.log.debug('attempting to create module %r', modulename)