public RouteResolver(IActivityMonitor monitor, RouteConfiguration c) { try { using (monitor.OpenGroup(LogLevel.Info, c.Name.Length > 0 ? string.Format("Resolving root configuration (name is '{0}').", c.Name) : "Resolving root configuration.", null)) { ProtoResolver protoResolver = new ProtoResolver(monitor, c); NamedSubRoutes = new Dictionary <string, SubRouteConfigurationResolved>(); using (monitor.OpenGroup(LogLevel.Info, "Building final routes.", null)) { var preRoot = new PreRoute(monitor, protoResolver.Root); Root = new RouteConfigurationResolved(protoResolver.Root.FullName, c.ConfigData, preRoot.FinalizeActions()); foreach (IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values) { var preRoute = new PreRoute(monitor, sub); NamedSubRoutes.Add(sub.FullName, new SubRouteConfigurationResolved(sub, preRoute.FinalizeActions())); } Root.SubRoutes = protoResolver.Root.SubRoutes.Select(p => NamedSubRoutes[p.FullName]).ToArray(); foreach (IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values) { NamedSubRoutes[sub.FullName].SubRoutes = sub.SubRoutes.Select(p => NamedSubRoutes[p.FullName]).ToArray(); } } } } catch (Exception ex) { monitor.SendLine(LogLevel.Fatal, null, ex); } }
public RouteResolver( IActivityMonitor monitor, RouteConfiguration c ) { try { using( monitor.OpenGroup( LogLevel.Info, c.Name.Length > 0 ? string.Format( "Resolving root configuration (name is '{0}').", c.Name ) : "Resolving root configuration.", null ) ) { ProtoResolver protoResolver = new ProtoResolver( monitor, c ); NamedSubRoutes = new Dictionary<string, SubRouteConfigurationResolved>(); using( monitor.OpenGroup( LogLevel.Info, "Building final routes.", null ) ) { var preRoot = new PreRoute( monitor, protoResolver.Root ); Root = new RouteConfigurationResolved( protoResolver.Root.FullName, c.ConfigData, preRoot.FinalizeActions() ); foreach( IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values ) { var preRoute = new PreRoute( monitor, sub ); NamedSubRoutes.Add( sub.FullName, new SubRouteConfigurationResolved( sub, preRoute.FinalizeActions() ) ); } Root.SubRoutes = protoResolver.Root.SubRoutes.Select( p => NamedSubRoutes[p.FullName] ).ToArray(); foreach( IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values ) { NamedSubRoutes[sub.FullName].SubRoutes = sub.SubRoutes.Select( p => NamedSubRoutes[p.FullName] ).ToArray(); } } } } catch( Exception ex ) { monitor.SendLine( LogLevel.Fatal, null, ex ); } }