Next: Indirect blocking out event, Previous: Indirect out event, Up: Execution Semantics [Contents][Index]
Since the provided interface is the same in the three cases below the externally visible behavior is identical.
The three different behavior implementations of the component show the subtle differences in the internal handling of messages.
interface I { in void a (); out void b (); behavior { on a: b; } } component indirect_multiple_out1 { provides I p; requires I r1; requires I r2; behavior { on p.a (): {r1.a (); r2.a ();} on r1.b (): {} on r2.b (): p.b (); } }
import indirect_multiple_out.dzn; component indirect_multiple_out2 { provides I p; requires I r1; requires I r2; behavior { on p.a (): {r1.a (); r2.a ();} on r1.b (): p.b (); on r2.b (): {} } }
import indirect_multiple_out.dzn; component indirect_multiple_out3 { provides I p; requires I r1; requires I r2; behavior { on p.a (): r1.a (); on r1.b (): r2.a (); on r2.b (): p.b (); } }