public static IRoutineHandlerAsync <TUser, TUserContext> GetUserHandlerAsync <TUser, TUserContext>( AspRoutineFeature aspRoutineFeature, Func <object> getInput, TUser user, TUserContext userContext, ContainerFactory containerFactory, MemberTag memberTag, ApplicationSettings applicationSettings, Func <TUserContext, string> configurationFor ) { var composeLoggers = InjectedManager.ComposeNLogMemberLoggerFactory(aspRoutineFeature.TraceDocument.Builder); var logger = new AdminkaRoutineHandlerFactory <TUserContext>(aspRoutineFeature.CorrelationToken, InjectedManager.DefaultRoutineTagTransformException, composeLoggers, applicationSettings.PerformanceCounters); var @for = configurationFor(userContext); var container = containerFactory.CreateContainer(memberTag, @for); bool hasVerboseLoggingPrivilege = true; var input = getInput(); var routineHandler = logger.CreateLoggingHandler(memberTag, container, userContext, hasVerboseLoggingPrivilege, input); return(new ComplexRoutineHandlerAsync <TUser, TUserContext>( closure => user, routineHandler )); }
public static ComplexRoutineHandlerAsync <StorageRoutineHandlerAsync <TUserContext>, TUserContext> GetContainerStorageHandlerAsync <TUserContext>( ContainerFactory containerFactory, MemberTag memberTag, AspRoutineFeature aspRoutineFeature, Func <object> getInput, TUserContext userContext, ApplicationSettings applicationSettings, //Func<TUserContext, string> getConfigurationFor, Func <TUserContext, string> getAuditStamp ) { var adminkaRoutineHandlerFactory = new AdminkaRoutineHandlerFactory <TUserContext>( correlationToken: Guid.NewGuid(), InjectedManager.DefaultRoutineTagTransformException, InjectedManager.ComposeNLogMemberLoggerFactory(null), applicationSettings.PerformanceCounters); IHandlerAsync <RoutineClosure <TUserContext> > loggingHandler = adminkaRoutineHandlerFactory.CreateLoggingHandler( memberTag, containerFactory.CreateContainer(memberTag, getAuditStamp(userContext)), userContext, hasVerboseLoggingPrivilege: false, getInput()); return(new ComplexRoutineHandlerAsync <StorageRoutineHandlerAsync <TUserContext>, TUserContext> /*AdminkaRoutineHandlerBase<TUserContext>*/ ( closure => new AuthenticationDomStorageRoutineHandlerAsync <TUserContext>( applicationSettings.AdminkaStorageConfiguration, userContext, null, new Handler <RoutineClosure <TUserContext>, RoutineClosure <TUserContext> >( () => closure, closure ), getAudit: uc => getAuditStamp(uc) ), loggingHandler )); }