public override void Unsubscribe(ChannelNetworkMgrBase mgr, IChannelNetworkComponentEX emitter) { if (emitter.PreUnsubscribe(mgr, Count) || Count == 0) { return; } if (emitter.GetOperationalState) { Count--; } if (Count == 0) { mgr.SignalEmit(emitter.GetChannel, false); } emitter.PostUnsubscribe(mgr, Count); }
public override void Subscribe(ChannelNetworkMgrBase mgr, IChannelNetworkComponentEX emitter) { if (emitter.PreSubscribe(mgr, Count)) { return; } if (Count == 0) { mgr.SignalEmit(emitter.GetChannel, emitter.GetOperationalState); } else if (emitter.GetOperationalState) { Count++; } emitter.PostSubscribe(mgr, Count); }