예제 #1
0
 protected override void Dispose(bool explicitDispose)
 {
     _nextSignalAwaitable = null;
     _signalState         = null;
     //
     base.Dispose(explicitDispose);
 }
예제 #2
0
        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;
                }
            }
        }
예제 #3
0
 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);
     }
예제 #4
0
 TriggerSignalState P_AtMostOneSignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState)
 {
     if ((inState?.SignalCounter ?? 0L) == 0L)
     {
         return(P_DefaultSignalCondition(signalProps: signalProps, inState: inState));
     }
     else
     {
         return(inState);
     }
 }
예제 #5
0
 TriggerSignalState P_DefaultSignalCondition(ITriggerSignalProperties signalProps, TriggerSignalState inState)
 {
     SignalCondition(signalProps: signalProps, inState: inState, outState: out var outState);
     return(outState);
 }