Separate handlers for signals and method calls
Signals and method calls have different parameter structures. When the
associated event trigger is chosen, what's generated to retrieve the
dbus data is specific to that trigger event. For signals, the data is
read from the given signal message. A method call is method specific and
is called to be done against all of the members within the event group.
Change-Id: I92cbdbf05852fbaa7f1b56ed518e30278cdf840b
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/templates/defs.mako b/control/templates/defs.mako
index 9d66461..5356677 100644
--- a/control/templates/defs.mako
+++ b/control/templates/defs.mako
@@ -11,26 +11,40 @@
handler::${par['handler']}(
%endif
%for i, hpk in enumerate(par['hparams']['params']):
- %if (i+1) != len(par['hparams']['params']):
- ${par['hparams'][hpk]},
- %else:
- ${par['hparams'][hpk]}
- %endif
+%if (i+1) != len(par['hparams']['params']):
+${par['hparams'][hpk]},
+%else:
+${par['hparams'][hpk]}
+%endif
%endfor
)
</%def>\
-<%def name="genHandler(sig)" buffered="True">
+<%def name="genSignal(sig)" buffered="True">
%if ('type' in sig['sparams']) and \
(sig['sparams']['type'] is not None):
-${sig['signal']}<${sig['sparams']['type']}>(
+${indent(sig['signal'], 3)}<${sig['sparams']['type']}>(\
%else:
-${sig['signal']}(
+${indent(sig['signal'], 3)}(\
%endif
%for spk in sig['sparams']['params']:
-${sig['sparams'][spk]},
+${indent(sig['sparams'][spk], 3)},
%endfor
-${genParams(par=sig)}\
+${genParams(par=sig)}
+)
+</%def>\
+
+<%def name="genMethod(meth)" buffered="True">
+%if ('type' in meth['mparams']) and \
+ (meth['mparams']['type'] is not None):
+${meth['method']}<${meth['mparams']['type']}>(
+%else:
+${meth['method']}(
+%endif
+%for spk in meth['mparams']['params']:
+${meth['mparams'][spk]},
+%endfor
+${genParams(par=meth)}\
)
</%def>\
@@ -78,19 +92,19 @@
%if ('match' in s) and \
(s['match'] is not None):
match::${s['match']}(
- %for i, mp in enumerate(s['mparams']):
- %if (i+1) != len(s['mparams']):
- "${mp}",
+ %for i, mp in enumerate(s['mparams']['params']):
+ %if (i+1) != len(s['mparams']['params']):
+ ${indent(s['mparams'][mp], 1)},
%else:
- "${mp}"
+ ${indent(s['mparams'][mp], 1)}
%endif
%endfor
),
%else:
"",
%endif
- make_handler(\
- ${indent(genHandler(sig=s), 3)}\
+ make_handler<SignalHandler>(\
+ ${genSignal(sig=s)}
)
)),
%endfor
@@ -98,9 +112,9 @@
%if ('init' in event['triggers']):
%for i in event['triggers']['init']:
make_trigger(trigger::init(
- %if ('handler' in i):
- make_handler(\
- ${indent(genParams(par=i), 3)}\
+ %if ('method' in i):
+ make_handler<MethodHandler>(\
+ ${indent(genMethod(meth=i), 3)}\
)
%endif
)),
diff --git a/control/templates/fan_zone_defs.mako.cpp b/control/templates/fan_zone_defs.mako.cpp
index 4b34c46..e64bff5 100644
--- a/control/templates/fan_zone_defs.mako.cpp
+++ b/control/templates/fan_zone_defs.mako.cpp
@@ -171,19 +171,19 @@
%if ('match' in s) and \
(s['match'] is not None):
match::${s['match']}(
- %for i, mp in enumerate(s['mparams']):
- %if (i+1) != len(s['mparams']):
- "${mp}",
+ %for i, mp in enumerate(s['mparams']['params']):
+ %if (i+1) != len(s['mparams']['params']):
+ ${indent(s['mparams'][mp], 1)},
%else:
- "${mp}"
+ ${indent(s['mparams'][mp], 1)}
%endif
%endfor
),
%else:
"",
%endif
- make_handler(\
- ${indent(genHandler(sig=s), 9)}\
+ make_handler<SignalHandler>(\
+ ${indent(genSignal(sig=s), 9)}\
)
)),
%endfor
@@ -191,9 +191,9 @@
%if ('init' in event['pc']['triggers']):
%for i in event['pc']['triggers']['init']:
make_trigger(trigger::init(
- %if ('handler' in i):
- make_handler(\
- ${indent(genParams(par=i), 3)}\
+ %if ('method' in i):
+ make_handler<MethodHandler>(\
+ ${indent(genMethod(meth=i), 3)}\
)
%endif
)),