Ejemplo n.º 1
0
        /// <summary>
        /// Helper method to loop ids to names.
        /// </summary>
        /// <param name="tokens"></param>
        /// <returns></returns>
        internal List <MetadataTokenName> ResolveAllTokenNames(MetadataTokenId[] tokens)
        {
            var counter = 0;
            var total   = tokens.Length;
            var names   = new List <MetadataTokenName>();

            _myProgram.PrintToConsole(string.Format("There are {0} token names", total));
            for (var i = 0; i < tokens.Length; i++)
            {
                counter += 1;
                try
                {
                    var cid = tokens[i];
                    _myProgram.ReportProgress(new ProgressMessage
                    {
                        Activity        = string.Format("{0}.{1}", cid.RslvAsmIdx, cid.Id),
                        ProcName        = System.Diagnostics.Process.GetCurrentProcess().ProcessName,
                        ProgressCounter = Etc.CalcProgressCounter(counter, total),
                        Status          = "Resolving names"
                    });
                    if (_myProgram.DisolutionCache.Contains(cid) ||
                        names.Any(x => x.Id == cid.Id && x.RslvAsmIdx == cid.RslvAsmIdx))
                    {
                        continue;
                    }

                    if (_myProgram.TokenId2NameCache.ContainsKey(cid))
                    {
                        names.Add(_myProgram.TokenId2NameCache[cid]);
                        continue;
                    }
                    MetadataTokenName tokenName;
                    var resolved = ResolveSingleTokenName(cid, out tokenName);

                    if (!resolved)
                    {
                        if (!_myProgram.DisolutionCache.Contains(cid))
                        {
                            _myProgram.DisolutionCache.Add(cid);
                        }
                        continue;
                    }
                    names.Add(tokenName);

                    if (!_myProgram.TokenId2NameCache.ContainsKey(cid))
                    {
                        _myProgram.TokenId2NameCache.Add(cid, tokenName);
                    }
                }
                catch
                {
                    continue;
                }
            }
            return(names);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Main from which the console is launched.
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var ut = String.Empty;
            var p  = new IaaProgram(args);

            try
            {
                p.StartConsole();

                if (p.PrintHelp())
                {
                    return;
                }
                p.PrintToConsole("New console started!");

                p.ParseProgramArgs();

                //print settings
                p.PrintToConsole($"{nameof(GetAsmIndicesCmdPort)} listening on port [{p.GetAsmIndicesCmdPort}]");
                p.PrintToConsole($"{nameof(GetTokenIdsCmdPort)} listening on port [{p.GetTokenIdsCmdPort}]");
                p.PrintToConsole($"{nameof(GetTokenNamesCmdPort)} listening on port [{p.GetTokenNamesCmdPort}]");
                p.PrintToConsole($"{nameof(GetTokenTypesCmdPort)} listening on port [{p.GetTokenTypesCmdPort}]");
                p.PrintToConsole($"{nameof(GetTokenPageRankCmdPort)} listening on port [{p.GetTokenPageRankCmdPort}]");
                p.PrintToConsole($"{nameof(ReassignTokenNamesCmdPort)} listening on port [{p.ReassignTokenNamesCmdPort}]");
                p.PrintToConsole($"Resolve GAC Assembly names is [{p.AreGacAssembliesResolved}]");
                p.PrintToConsole("type 'exit' to quit", false);

                //open ports
                p.LaunchListeners();

                //park main
                for (; ;)  //ever
                {
                    ut = Console.ReadLine();
                    if (string.IsNullOrWhiteSpace(ut))
                    {
                        continue;
                    }
                    ut = ut.Trim();
                    if (String.Equals(ut, "exit", StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    if (p.PrintHelp(new [] { ut }))
                    {
                        Console.WriteLine(p.RuntimeHelp());
                    }

                    //handle command from the console.
                    p.RtCommands(ut);
                }
            }
            catch (Exception ex)
            {
                p.PrintToConsole(ex);
            }

            if (string.IsNullOrWhiteSpace(ut) || !ut.StartsWith("exit"))
            {
                Console.ReadKey();
            }
        }