The xtrigger example in the documentation includes a line like
@clock_0 & @upstream => FAM:succeed-all => blam
i.e. wait until a clock trigger and until an upstream task is completed. Does the logic for xtrigger evaluation follow any C-style short-circuiting rules (i.e. test the clock, and if true, then test upstream to evaluate the AND condition)? Or, in this case, would the upstream task be polled at the same interval as the clock?
No, there is no “short circuiting” of trigger expressions. But I don’t think it matters because:
- xtrigger checking intervals are independent (and can be configured separately)
- once satisfied, a trigger function will not be called again (even if a dependent tasks does not have all of its prerequisites satisfied yet; plus identical triggers are shared by all tasks that depend on them).
- it can be helpful to see which of a bunch of task prerequisites are satisfied at a given time (and for that we need to evaluate them all even if not strictly necessary for immediate task triggering).