private static void ConfigureGenericListenerExtensions( IServiceHostGenericListenerReplicaTemplateConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { var useListenerEndpoint = extensions.GetExtension <IUseListenerEndpointTheoryExtension>(); var useGenericCommunicationListener = extensions.GetExtension <IUseGenericListenerCommunicationListenerTheoryExtension>(); var useDependencies = extensions.GetExtension <IUseDependenciesTheoryExtension>(); var configureDependencies = extensions.GetExtension <IConfigureDependenciesTheoryExtension>(); var pickDependency = extensions.GetExtension <IPickDependencyTheoryExtension>(); var pickListenerEndpoint = extensions.GetExtension <IPickListenerEndpointTheoryExtension>(); configurator.UseEndpoint(useListenerEndpoint.Endpoint); configurator.UseDependencies(useDependencies.Factory); configurator.UseCommunicationListener( ( context, endpointName, provider) => { pickListenerEndpoint.PickAction(endpointName); foreach (var pickAction in pickDependency.PickActions) { pickAction(provider); } return(useGenericCommunicationListener.Factory(context, endpointName, provider)); }); configurator.ConfigureDependencies( dependencies => { configureDependencies.ConfigAction(dependencies); }); }
private static void ConfigureEventSourceExtensions( IServiceHostEventSourceReplicaTemplateConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { var useDependencies = extensions.GetExtension <IUseDependenciesTheoryExtension>(); var useEventSourceImplementation = extensions.GetExtension <IUseEventSourceImplementationTheoryExtension>(); var configureDependencies = extensions.GetExtension <IConfigureDependenciesTheoryExtension>(); var pickDependency = extensions.GetExtension <IPickDependencyTheoryExtension>(); configurator.UseDependencies(useDependencies.Factory); configurator.ConfigureDependencies( dependencies => { configureDependencies.ConfigAction(dependencies); }); configurator.UseImplementation( provider => { foreach (var action in pickDependency.PickActions) { action(provider); } return(useEventSourceImplementation.Factory(provider)); }); }
public static void ConfigureGenericListenerExtensions( IStatelessServiceHostBuilderConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { configurator.DefineGenericListener( listenerBuilder => { listenerBuilder.ConfigureObject(c => ConfigureGenericListenerExtensions(c, extensions)); }); }
public static void ConfigureEventSourceExtensions( IStatelessServiceHostBuilderConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { configurator.SetupEventSource( eventSourceBuilder => { eventSourceBuilder.ConfigureObject(c => ConfigureEventSourceExtensions(c, extensions)); }); }
private static void ConfigureDelegateExtensions( IServiceHostDelegateReplicaTemplateConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { var useDelegate = extensions.GetExtension <IUseDelegateTheoryExtension>(); var useDependencies = extensions.GetExtension <IUseDependenciesTheoryExtension>(); var configureDependencies = extensions.GetExtension <IConfigureDependenciesTheoryExtension>(); configurator.UseDependencies(useDependencies.Factory); configurator.UseDelegate(useDelegate.Delegate); configurator.ConfigureDependencies( dependencies => { configureDependencies.ConfigAction(dependencies); }); }
private static void ConfigureAspNetCoreListenerExtensions( IServiceHostAspNetCoreListenerReplicaTemplateConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { var useListenerEndpoint = extensions.GetExtension <IUseListenerEndpointTheoryExtension>(); var useAspNetCoreListenerCommunicationListener = extensions.GetExtension <IUseAspNetCoreListenerCommunicationListenerTheoryExtension>(); var useAspNetCoreWebHostBuilder = extensions.GetExtension <IUseAspNetCoreListenerWebHostBuilderTheoryExtension>(); var configureDependencies = extensions.GetExtension <IConfigureDependenciesTheoryExtension>(); var pickDependency = extensions.GetExtension <IPickDependencyTheoryExtension>(); var pickListenerEndpoint = extensions.GetExtension <IPickListenerEndpointTheoryExtension>(); configurator.UseEndpoint(useListenerEndpoint.Endpoint); configurator.UseWebHostBuilder( () => new WebHostBuilderDecorator( useAspNetCoreWebHostBuilder.Factory(), afterBuild: host => { foreach (var pickAction in pickDependency.PickActions) { pickAction(host.Services); } })); configurator.UseCommunicationListener( ( context, endpointName, factory) => { pickListenerEndpoint.PickAction(endpointName); return(useAspNetCoreListenerCommunicationListener.Factory(context, endpointName, factory)); }, builder => { }); configurator.ConfigureWebHost( webHostBuilder => { webHostBuilder.ConfigureServices( dependencies => { configureDependencies.ConfigAction(dependencies); }); }); }
public static void ConfigureDelegateExtensions( IStatelessServiceHostBuilderConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { configurator.DefineDelegate( delegateBuilder => { delegateBuilder.ConfigureObject(c => ConfigureDelegateExtensions(c, extensions)); delegateBuilder.ConfigureObject( c => { var useDelegateInvoker = extensions .GetExtension <IUseDelegateInvokerTheoryExtension <IStatelessServiceDelegateInvocationContext> >(); var useDelegateEvent = extensions .GetExtension <IUseDelegateEventTheoryExtension <StatelessServiceLifecycleEvent> >(); var pickDependency = extensions.GetExtension <IPickDependencyTheoryExtension>(); c.UseDelegateInvoker( ( @delegate, provider) => { @delegate = DelegateWrap.Create( @delegate, new Action <IServiceProvider>( serviceProvider => { foreach (var pickAction in pickDependency.PickActions) { pickAction(serviceProvider); } })); var invoker = useDelegateInvoker.Factory(@delegate, provider); return(new StatelessServiceHostDelegateInvokerDecorator(invoker)); }); c.UseEvent(useDelegateEvent.Event); }); }); }
private static void ConfigureRemotingListenerExtensions( IServiceHostRemotingListenerReplicaTemplateConfigurator configurator, TheoryItem.TheoryItemExtensionProvider extensions) { var useListenerEndpoint = extensions.GetExtension <IUseListenerEndpointTheoryExtension>(); var useRemotingCommunicationListener = extensions.GetExtension <IUseRemotingListenerCommunicationListenerTheoryExtension>(); var useRemotingImplementation = extensions.GetExtension <IUseRemotingListenerImplementationTheoryExtension>(); var useRemotingSettings = extensions.GetExtension <IUseRemotingListenerSettingsTheoryExtension>(); var useRemotingSerializationProvider = extensions.GetExtension <IUseRemotingListenerSerializerTheoryExtension>(); var useRemotingHandler = extensions.GetExtension <IUseRemotingListenerHandlerTheoryExtension>(); var useDependencies = extensions.GetExtension <IUseDependenciesTheoryExtension>(); var configureDependencies = extensions.GetExtension <IConfigureDependenciesTheoryExtension>(); var pickDependency = extensions.GetExtension <IPickDependencyTheoryExtension>(); var pickListenerEndpoint = extensions.GetExtension <IPickListenerEndpointTheoryExtension>(); var pickRemotingImplementation = extensions.GetExtension <IPickRemotingListenerImplementationTheoryExtension>(); var pickRemotingSettings = extensions.GetExtension <IPickRemotingListenerSettingsTheoryExtension>(); var pickRemotingSerializationProvider = extensions.GetExtension <IPickRemotingListenerSerializationProviderTheoryExtension>(); var pickRemotingHandler = extensions.GetExtension <IPickRemotingListenerHandlerTheoryExtension>(); configurator.UseEndpoint(useListenerEndpoint.Endpoint); configurator.UseDependencies(useDependencies.Factory); configurator.UseHandler( provider => { pickRemotingImplementation.PickAction(provider.GetService <IService>()); var handler = useRemotingHandler.Factory(provider); pickRemotingHandler.PickAction(handler); return(handler); }); configurator.UseCommunicationListener( ( context, build) => { var options = build(context); pickListenerEndpoint.PickAction(options.ListenerSettings.EndpointResourceName); pickRemotingSerializationProvider.PickAction(options.MessageSerializationProvider); pickRemotingSettings.PickAction(options.ListenerSettings); return(useRemotingCommunicationListener.Factory(context, build)); }); configurator.UseImplementation( provider => { foreach (var action in pickDependency.PickActions) { action(provider); } return(useRemotingImplementation.Factory(provider)); }); configurator.UseSerializationProvider(useRemotingSerializationProvider.Factory); configurator.UseSettings(useRemotingSettings.Factory); configurator.ConfigureDependencies( dependencies => { configureDependencies.ConfigAction(dependencies); }); }