Beispiel #1
0
        static void Main(string[] args)
        {
            CgTimeStampSource.SupplyAlternateProvider(HpTimeStampProvider.CreateInstance());
            TimeStampSource.Calibrate();
            var gameFactories = new ClortonGameFactorySource();

            (bool gotFileOk, string errorGettingFile, FileInfo outputFile, int numGames, VaultType varietyOfVault) = GetOutputFile(args);
            GameFactory = varietyOfVault == VaultType.Basic
                ? gameFactories.BasicVaultGameFactory
                : gameFactories.CustomVaultGameFactory;
            if (numGames == 1)
            {
                Console.WriteLine("Type of vault selected: [" + varietyOfVault + "].");
            }

            Debug.Assert(gotFileOk == (outputFile != null));
            if (gotFileOk)
            {
                if (numGames > 1)
                {
                    try
                    {
                        PlayMultipleClortonGames(numGames, outputFile);
                    }
                    catch (Exception ex)
                    {
                        Console.Error.WriteLine(ex.ToString());
                        Console.Error.WriteLine("Unexpected error initializing game.  Terminating.");
                        Environment.Exit(-1);
                    }
                }
                else
                {
                    try
                    {
                        PlayClortonGame(outputFile);
                    }
                    catch (Exception ex)
                    {
                        Console.Error.WriteLine(ex.ToString());
                        Console.Error.WriteLine("Unexpected error initializing game.  Terminating.");
                        Environment.Exit(-1);
                    }
                }
            }
            else
            {
                Console.Error.WriteLine("There was a problem with the output file.  Additional info: [" +
                                        errorGettingFile + "].");
            }
        }
Beispiel #2
0
 static void Main(string[] args)
 {
     CgTimeStampSource.SupplyAlternateProvider(HpTimeStampProvider.CreateInstance());
     TimeStampSource.Calibrate();
     (bool gotFileOk, string errorInfo, FileInfo outputFile, int numGames, TimeSpan timeout) = GetOutputFile(args);
     Debug.Assert((outputFile != null) == gotFileOk);
     if (gotFileOk)
     {
         Console.WriteLine($"Going to play {numGames} CafeBabe games, each with a time limit of {timeout.TotalSeconds:F5} seconds.  Results will be written to file {outputFile?.FullName ?? "UNSPECIFIED"} ");
         if (numGames > 1)
         {
             try
             {
                 PlayMultipleCafeBabeGames(numGames, outputFile, timeout);
             }
             catch (Exception ex)
             {
                 Console.Error.WriteLine(ex.ToString());
                 Console.Error.WriteLine("Unexpected error initializing game.  Terminating.");
                 Environment.Exit(-1);
             }
         }
         else
         {
             try
             {
                 PlayCafeBabeGame(outputFile, timeout);
             }
             catch (Exception e)
             {
                 Console.Error.WriteLine(e.ToString());
                 Console.Error.WriteLine("Unexpected error initializing game.  Terminating.");
                 Environment.Exit(-1);
             }
         }
     }
     else
     {
         Console.Error.WriteLine(
             "There was a problem parsing the parameters passed hereto." +
             $"{(!string.IsNullOrEmpty(errorInfo) ? ("  " + errorInfo) : string.Empty)}");
     }
 }
Beispiel #3
0
        /// <summary>
        /// the thread loop
        /// </summary>
        /// <param name="tokenObj"></param>
        protected void ThreadLoop(object tokenObj)
        {
            DateTime startedAt;

            CgTimeStampSource.Calibrate();
            if (tokenObj is CancellationToken token && _status.TrySetStarting())
            {
                startedAt = CgTimeStampSource.Now;
                try
                {
                    DoJob(token);
                }
                catch (OperationCanceledException)
                {
                    _status.TrySetCancelRequested();
                }
                catch (Exception ex)
                {
                    Fault = ex;
                }
                finally
                {
                    try
                    {
                        PerformFinishingActions();
                    }
                    catch (Exception ex)
                    {
                        FinishingFault = ex;
                    }

                    _status.ForceEnded();
                    DateTime ts       = CgTimeStampSource.Now;
                    TimeSpan duration = ts - startedAt;
                    _duration.TrySet(duration);
                    _helper.WriteLine("At [" + ts.ToString("O") + "], game thread of type [" + ConcreteType.Name +
                                      "] and thread name [" + _t.Value.Name + "] terminated.  Duration: [" +
                                      duration.TotalMilliseconds.ToString("N3") + "] milliseconds.");
                }
            }
        }