Skip to content

Commit

Permalink
Merge pull request #96 from SnaffCon/deathtoenvironmentdotexit
Browse files Browse the repository at this point in the history
Removes all usage of Environment.Exit()
  • Loading branch information
l0ss committed Jul 13, 2022
2 parents 994a6e3 + 373dce6 commit a3ad635
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
4 changes: 2 additions & 2 deletions Snaffler/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ private static Options ParseImpl(string[] args)
if ((args.Contains("--help") || args.Contains("/?") || args.Contains("help") || args.Contains("-h") || args.Length == 0))
{
parser.ShowUsage();
Environment.Exit(0);
return null;
}

TomlSettings settings = TomlSettings.Create(cfg => cfg
Expand Down Expand Up @@ -295,7 +295,7 @@ private static Options ParseImpl(string[] args)
Console.WriteLine("Wrote config values to .\\default.toml");
parsedConfig.LogToConsole = true;
Mq.Degub("Enabled logging to stdout.");
Environment.Exit(0);
return null;
}
else
{
Expand Down
31 changes: 21 additions & 10 deletions Snaffler/SnaffleRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using System.IO;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Threading;

namespace Snaffler
{
Expand Down Expand Up @@ -177,12 +178,20 @@ public void Run(string[] args)
}

controller = new SnaffCon(Options);
Task thing = Task.Factory.StartNew(() => { controller.Execute(); });

while (true)
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
Task thing = Task.Factory.StartNew(() => { controller.Execute(); }, token);
bool exit = false;

while (exit == false)
{
HandleOutput();
if (HandleOutput() == true)
{
exit = true;
}
}
return;
}
catch (Exception e)
{
Expand All @@ -203,10 +212,9 @@ private void DumpQueue()
{
Console.ReadKey();
}
Environment.Exit(1);
}

private void HandleOutput()
private bool HandleOutput()
{
BlockingMq Mq = BlockingMq.GetMq();
foreach (SnafflerMessage message in Mq.Q.GetConsumingEnumerable())
Expand All @@ -218,8 +226,15 @@ private void HandleOutput()
else if (Options.LogType == LogType.JSON)
{
ProcessMessageJSON(message);
}
}

// catch terminating messages and bail out of the master 'while' loop
if ((message.Type == SnafflerMessageType.Fatal) || (message.Type == SnafflerMessageType.Finish))
{
return true;
}
}
return false;
}

private void ProcessMessage(SnafflerMessage message)
Expand Down Expand Up @@ -256,7 +271,6 @@ private void ProcessMessage(SnafflerMessage message)
{
Console.ReadKey();
}
Environment.Exit(1);
break;
case SnafflerMessageType.Finish:
Logger.Info("Snaffler out.");
Expand All @@ -266,7 +280,6 @@ private void ProcessMessage(SnafflerMessage message)
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
Environment.Exit(0);
break;
}
}
Expand Down Expand Up @@ -313,7 +326,6 @@ private void ProcessMessageJSON(SnafflerMessage message)
{
Console.ReadKey();
}
Environment.Exit(1);
break;
case SnafflerMessageType.Finish:
Logger.Info("Snaffler out.");
Expand All @@ -328,7 +340,6 @@ private void ProcessMessageJSON(SnafflerMessage message)
Logger.Info("Normalising output, please wait...");
FixJSONOutput();
}
Environment.Exit(0);
break;
}
}
Expand Down
1 change: 1 addition & 0 deletions Snaffler/Snaffler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public static void Main(string[] args)
{
SnaffleRunner runner = new SnaffleRunner();
runner.Run(args);
Console.WriteLine("I snaffled 'til the snafflin was done.");
}
}
}

0 comments on commit a3ad635

Please sign in to comment.