Пример #1
0
        private void XmrTestReset(string[] args, int indx)
        {
            bool flagAll    = false;
            int  numScripts = 0;

            XMRInstance[] instances;

            if (args.Length <= indx)
            {
                m_log.Error("[YEngine]: must specify part of script name or -all for all scripts");
                return;
            }

            // Decode command line options.
            for (int i = indx; i < args.Length; i++)
            {
                if (args[i] == "-all")
                {
                    flagAll = true;
                    continue;
                }
                if (args[i] == "-help")
                {
                    m_log.Info("[YEngine]: yeng reset -all | <part-of-script-name>");
                    return;
                }
                if (args[i][0] == '-')
                {
                    m_log.Error("[YEngine]: unknown option " + args[i] + ", try 'yeng reset -help'");
                    return;
                }
            }

            // Scan instance list to find those that match selection criteria.
            if (!Monitor.TryEnter(m_InstancesDict, 100))
            {
                m_log.Error("[YEngine]: deadlock m_LockedDict=" + m_LockedDict);
                return;
            }

            try
            {
                instances = new XMRInstance[m_InstancesDict.Count];
                foreach (XMRInstance ins in m_InstancesDict.Values)
                {
                    if (flagAll || InstanceMatchesArgs(ins, args, indx))
                    {
                        instances[numScripts++] = ins;
                    }
                }
            }
            finally
            {
                Monitor.Exit(m_InstancesDict);
            }

            // Reset the instances as if someone clicked their "Reset" button.
            for (int i = 0; i < numScripts; i++)
            {
                XMRInstance inst = instances[i];
                m_log.Info("[YEngine]: resetting " + inst.m_DescName);
                inst.Reset();
            }
        }