Example #1
0
        public void BuildLocal(BehaviorGraph graph)
        {
            // Local policies will ONLY apply to chains built by this ConfigGraph,
            // and not to chains that are built by imports

            var imports = UniqueImports().Select(x => {
                return Task.Factory.StartNew(() => {
                    return x.BuildChains(graph);
                });
            }).ToArray();

            var chainSources = Sources.Select(source => {
                return Task.Factory.StartNew(() => {
                    return source.BuildChains(graph);
                });
            }).ToArray();

            Task.WaitAll(chainSources);

            chainSources.Each(x => graph.AddChains(x.Result));

            Local.Explicits.RunActions(graph);
            Local.Policies.RunActions(graph);
            Local.Reordering.RunActions(graph);

            Task.WaitAll(imports);

            imports.Each(x => graph.AddChains(x.Result));
        }
Example #2
0
        public void BuildLocal(BehaviorGraph graph, IPerfTimer timer)
        {
            // Local policies will ONLY apply to chains built by this ConfigGraph,
            // and not to chains that are built by imports

            var imports = UniqueImports().Select(x => x.BuildChains(graph, timer)).ToArray();

            var chainSources =
                Sources.Select(
                    source => source.BuildChains(graph, timer)).ToArray();

            Task.WaitAll(chainSources, 30.Seconds()).AssertFinished();

            chainSources.Each(x => graph.AddChains(x.Result));

            Local.Explicits.RunActions(graph);
            Local.Policies.RunActions(graph);
            Local.Reordering.RunActions(graph);

            Task.WaitAll(imports, 30.Seconds()).AssertFinished();

            imports.Each(x => graph.AddChains(x.Result));
        }
        private static void addBuiltInDiagnostics(BehaviorGraph graph)
        {
            var settings = graph.Settings.Get<DiagnosticsSettings>();
            if (FubuMode.InDevelopment() || settings.TraceLevel != TraceLevel.None)
            {
                var chains = new DiagnosticChainsSource().BuildChains(graph).ToArray();

                // Apply authorization rules to the diagnostic chains
                chains.Each(x => x.Authorization.AddPolicies(settings.AuthorizationRights));

                graph.AddChains(chains);

            }

            if (FubuMode.InDevelopment() || settings.TraceLevel == TraceLevel.Verbose)
            {
                graph.Services.Clear(typeof(IBindingLogger));
                graph.Services.AddService<IBindingLogger, RecordingBindingLogger>();

                graph.Services.Clear(typeof(IBindingHistory));
                graph.Services.AddService<IBindingHistory, BindingHistory>();

                graph.Services.AddService<ILogListener, RequestTraceListener>();
            }
            else if (settings.TraceLevel == TraceLevel.Production)
            {
                graph.Services.AddService<ILogListener, ProductionModeTraceListener>();
            }
        }