Only code can convince me.
In my code I read the Output Recipients as demonstrated below (and I also read “Output Sources”, which doesn’t exist, just to prove that it doesn’t exist - for Outputs) and I output the result of the check visibly in the picture below the code (the recipient counts).
I think the code below is rather convincing:
// Optimize object's output
var OUT_O = Component.Params.IndexOfOutputParam("O");
var param_O = Component.Params.Output[OUT_O];
// Optimize guid's output
var OUT_G = Component.Params.IndexOfOutputParam("G");
var param_G = Component.Params.Output[OUT_G];
Print("O Recipients: " + param_O.Recipients.Count.ToString());
Print("O Sources : " + param_O.Sources.Count.ToString());
Print("G Recipients: " + param_G.Recipients.Count.ToString());
Print("G Sources : " + param_G.Sources.Count.ToString());
Fig 1. Only the params.Output.Recipients return a value > 0 (due to the fact that a wire is connected)
Why the expected events aren’t firing, though, is not explained by your take on “Input Receivers” and “Ourput Sources”, which obviously isn’t correctly paired (they need to be swapped).
But now the thread diverted into a completely irrelevant direction. Therefore may I suggest that you drop the Source/Recipient confusion and let someone answer who knows why the corresponding events are not fired. I can understand if the event for one (1) of the cases isn’t fired ((for value change, or for connecting wires, since the documentation isn’t 100% clear about whether it fires for either), but if not fireing for any of them then…
Well, that was my question (no event fired in any of the cases). And to be clear: This is not a question about whether it is a good idea or not to check the Output Recipients (it IS a good idea). My question is only about being notified when connecting/disconnecting happens. @DavidRutten would know more about this.