PointAsyncArg <TEnum, TArg>(this ISequencerUC sequencer, SeqPointTypeUC seqPointTypeUC, TEnum registration, Func <bool> condition, TArg arg, Action <object> injectContinuation = null) where TEnum : struct { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null || condition == null || !condition()) { return(CompletedAwaiter); } ISequencerExceptionRegister exceptionRegister = register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; ISequencerPointUC <TEnum> seqPoint = register.TryGet(registration); return (seqPoint?.ProductionPoint(taskRegister, exceptionRegister, seqPointTypeUC, arg, injectContinuation) ?? CompletedAwaiter ); }
public void Add <TEnum>(ISequencerPointUC <TEnum> sequencerPoint) where TEnum : struct { if (sequencerPoint == null) { throw new ArgumentNullException(nameof(sequencerPoint)); } SequencerEventMapperUC <TEnum> .TestEnum(); ISequencerEventMapperUC enumValueMapper = Mapper .AddOrUpdate(SequencerEventMapperUC <TEnum> .GenericInterfaceType, //Add - multiple can be created, one is going to win type => new SequencerEventMapperUC <TEnum>(), //Update, keep existing unless it is null, //multiple can be created, one is going to win (type, previous) => previous ?? new SequencerEventMapperUC <TEnum>()) ; ISequencerEventMapperUC <TEnum> genericEnumValueMapper = (ISequencerEventMapperUC <TEnum>)enumValueMapper ; genericEnumValueMapper.Add(sequencerPoint.Registration, sequencerPoint); }
public void Add(TEnum enumValue, ISequencerPointUC <TEnum> sequencerPoint) { if (Mapper.TryAdd(enumValue, sequencerPoint)) { return; } throw new ArgumentException($"{nameof(TEnum)}.{enumValue} has been already registered!"); }
Register <TEnum>(this ISequencerUC sequencer, ISequencerPointUC <TEnum> sequencerPoint) where TEnum : struct { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null) { return(sequencer); } register.ExceptionRegister.TryReThrowException(); register.Add(sequencerPoint); return(sequencer); }
TestPointAsync <TEnum>(this ISequencerUC sequencer, TEnum registration) where TEnum : struct { if (!(sequencer is SequencerRegisterUC register)) { return(TestPointUC.EmptyCompleted); } ISequencerExceptionRegister exceptionRegister = register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; ISequencerPointUC <TEnum> seqPoint = register.TryGet(registration); return (seqPoint?.TestPoint(taskRegister, exceptionRegister) ?? TestPointUC.EmptyCompleted ); }
public void Add <TEnum>(ISequencerPointUC <TEnum> sequencerPoint) where TEnum : struct { EventRegister.Add(sequencerPoint); }