protected override void Dispose(bool explicitDispose) { _nextSignalAwaitable = null; _signalState = null; // base.Dispose(explicitDispose); }
protected virtual void SignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState, out TriggerSignalState outState) { signalProps.EnsureNotNull(nameof(signalProps)); // if (inState is null) { outState = new TriggerSignalState(signalCounter: 1L, lastSignalTimestamp: signalProps.Timestamp); } else { switch (inState.SignalCounter) { case long.MaxValue: outState = inState; break; default: outState = new TriggerSignalState(signalCounter: inState.SignalCounter + 1L, lastSignalTimestamp: signalProps.Timestamp); break; } } }
protected override void SignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState, out TriggerSignalState outState) { signalProps.EnsureNotNull(nameof(signalProps)); // if ((inState is null) || inState.SignalCounter == 0 || signalProps.Timestamp.Subtract(inState.LastSignalTimestamp) > _signalFrequencyLimit) { base.SignalCondition(signalProps: signalProps, inState: inState, outState: out outState); }
TriggerSignalState P_AtMostOneSignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState) { if ((inState?.SignalCounter ?? 0L) == 0L) { return(P_DefaultSignalCondition(signalProps: signalProps, inState: inState)); } else { return(inState); } }
TriggerSignalState P_DefaultSignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState) { SignalCondition(signalProps: signalProps, inState: inState, outState: out var outState); return(outState); }