Skip to content

Commit 55458e7

Browse files
committed
Fix logging busy waiting!
1 parent 30a3fee commit 55458e7

4 files changed

Lines changed: 22 additions & 43 deletions

File tree

Alibi/Advertiser.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ private async Task SendHeartbeat(string url)
2121
{
2222
Server.Logger.Log(LogSeverity.Info, $"[Advertiser] Attempting to send heartbeat...", true);
2323
var server = Server.Instance;
24-
var json = new Heartbeat(
25-
server.ServerConfiguration.Port,
26-
server.ServerConfiguration.WebsocketPort,
27-
server.ConnectedPlayers,
28-
server.ServerConfiguration.ServerName,
29-
server.ServerConfiguration.ServerDescription);
24+
var json = new
25+
{
26+
port = server.ServerConfiguration.Port,
27+
ws_port = server.ServerConfiguration.WebsocketPort,
28+
players = server.ConnectedPlayers,
29+
name = server.ServerConfiguration.ServerName,
30+
description = server.ServerConfiguration.ServerDescription
31+
};
3032
var response = await _client.PostAsync(url, new StringContent(JsonConvert.SerializeObject(json)));
3133
response.EnsureSuccessStatusCode();
3234
}
@@ -60,7 +62,5 @@ public void Stop()
6062
{
6163
_cts.Cancel();
6264
}
63-
64-
private record Heartbeat(int port, int ws_port, int players, string name, string description);
6565
}
6666
}

Alibi/Logger.cs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22
using System.Collections.Generic;
33
using System.Diagnostics;
44
using System.IO;
5-
using System.Threading.Tasks;
65
using Alibi.Plugins.API;
76

87
namespace Alibi
98
{
109
public class Logger
1110
{
1211
public const string LogsFolder = "Logs";
13-
private readonly Queue<Tuple<LogSeverity, string>> _consoleLogQueue = new();
1412
private readonly Queue<string> _logBuffer;
1513

1614
private readonly Server _server;
@@ -19,29 +17,6 @@ public Logger(Server server)
1917
{
2018
_server = server;
2119
_logBuffer = new Queue<string>(_server.ServerConfiguration.LogBufferSize);
22-
Task.Run(PrintLogs);
23-
}
24-
25-
private void PrintLogs()
26-
{
27-
while (true)
28-
{
29-
Task.Delay(100).Wait();
30-
if (!_consoleLogQueue.TryDequeue(out var log))
31-
continue;
32-
33-
Console.ForegroundColor = log.Item1 switch
34-
{
35-
LogSeverity.Info => ConsoleColor.White,
36-
LogSeverity.Special => ConsoleColor.Cyan,
37-
LogSeverity.Warning => ConsoleColor.Yellow,
38-
LogSeverity.Error => ConsoleColor.Red,
39-
_ => Console.ForegroundColor
40-
};
41-
Console.WriteLine(log.Item2);
42-
Console.ResetColor();
43-
}
44-
// ReSharper disable once FunctionNeverReturns
4520
}
4621

4722
/// <summary>
@@ -69,7 +44,16 @@ private void AddLog(LogSeverity severity, string log)
6944
_logBuffer.Dequeue();
7045

7146
_logBuffer.Enqueue(log);
72-
_consoleLogQueue.Enqueue(new Tuple<LogSeverity, string>(severity, log));
47+
Console.ForegroundColor = severity switch
48+
{
49+
LogSeverity.Info => ConsoleColor.White,
50+
LogSeverity.Special => ConsoleColor.Cyan,
51+
LogSeverity.Warning => ConsoleColor.Yellow,
52+
LogSeverity.Error => ConsoleColor.Red,
53+
_ => Console.ForegroundColor
54+
};
55+
Console.WriteLine(log);
56+
Console.ResetColor();
7357
}
7458

7559
public void IcMessageLog(string message, IArea area, IClient client)

Alibi/Program.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,18 @@
22
using System;
33
using System.Globalization;
44
using System.IO;
5-
using System.Threading;
65
using System.Threading.Tasks;
76
using Alibi.Plugins.API;
87

98
namespace Alibi
109
{
1110
internal static class Program
1211
{
13-
internal static readonly ManualResetEvent ResetEvent;
14-
1512
private static readonly Server _server;
1613

1714
static Program()
1815
{
1916
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
20-
ResetEvent = new ManualResetEvent(false);
2117
Environment.CurrentDirectory = GetRealProcessDirectory();
2218
if (!File.Exists(Server.ConfigPath) || new FileInfo(Server.ConfigPath).Length <= 0)
2319
new Configuration().SaveToFile(Server.ConfigPath);
@@ -26,14 +22,14 @@ static Program()
2622
_server.Start();
2723
}
2824

29-
private static void Main(string[] args)
25+
private static async Task Main(string[] args)
3026
{
3127
AppDomain.CurrentDomain.ProcessExit += ExitProgram;
3228
Console.CancelKeyPress += ExitProgram;
3329
AppDomain.CurrentDomain.UnhandledException += ExitProgram;
3430
TaskScheduler.UnobservedTaskException += ExitProgram;
3531

36-
ResetEvent.WaitOne();
32+
await Task.Delay(-1);
3733
}
3834

3935
private static string GetRealProcessDirectory()

Alibi/Server.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public Server(Configuration config) : base(config.BoundIpAddress, config.Port)
7979
{
8080
Logger.Log(LogSeverity.Warning,
8181
" At least one area is required to start the server, writing default area...");
82-
readAreas = new[] {new Area()};
82+
readAreas = [new Area()];
8383
File.WriteAllText(AreasPath, JsonConvert.SerializeObject(readAreas, Formatting.Indented));
8484
}
8585

@@ -117,7 +117,7 @@ public void InitializeLists()
117117
{
118118
EnsureConfigFiles();
119119
MusicList = File.ReadAllLines(MusicPath);
120-
if (MusicList[0].Contains("."))
120+
if (MusicList[0].Contains('.'))
121121
{
122122
var tmp = MusicList.ToList();
123123
tmp.Insert(0, "==Music==");
@@ -379,7 +379,6 @@ protected override void OnStopped()
379379
_advertiser.Stop();
380380
_wsProxy.Stop();
381381
Logger.Dump();
382-
Program.ResetEvent.Set();
383382
Dispose();
384383
}
385384
}

0 commit comments

Comments
 (0)