Replacing Networking (#271)

- [X] Removing Kestrel & Libuv
- [X] Cleaning up NetState
- [X] Removing System.IO.Pipelines
- [X] Cleaning up packet reading
- [X] Adds a maximum of 5000 sockets (configurable) to prevent OOM
- [X] Replaces the AsyncState with a thread-safe wrapped boolean called NetworkState
- [X] Removes Parallel.ForEach (no perf gain)
- [X] Removes custom houses compression on another thread
- [X] Test high load scenarios

Bumps release version
This commit is contained in:
Kamron Batman 2020-10-20 20:55:19 -07:00 • committed by GitHub
parent 8603e31023
commit 369a27b800
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 1780 additions and 1569 deletions

View file

@ -295,7 +295,12 @@ namespace Server.Items
{
var door = doors[i];
if (door?.Open == true)
if (door == null)
{
continue;
}
if (door.Open)
{
return AddonFitResult.DoorsNotClosed;
}

View file

@ -378,8 +378,8 @@ namespace Server.Items
reader.Seek(4, SeekOrigin.Current); // Skip flags and page count
var title = reader.ReadStringSafe(60);
var author = reader.ReadStringSafe(30);
var title = reader.ReadAsciiSafe(60);
var author = reader.ReadAsciiSafe(30);
book.Title = Utility.FixHtml(title);
book.Author = Utility.FixHtml(author);
@ -404,7 +404,7 @@ namespace Server.Items
return;
}
var title = reader.ReadUTF8StringSafe(titleLength);
var title = reader.ReadUTF8Safe(titleLength);
int authorLength = reader.ReadUInt16();
@ -413,7 +413,7 @@ namespace Server.Items
return;
}
var author = reader.ReadUTF8StringSafe(authorLength);
var author = reader.ReadUTF8Safe(authorLength);
book.Title = Utility.FixHtml(title);
book.Author = Utility.FixHtml(author);
@ -452,7 +452,7 @@ namespace Server.Items
for (var j = 0; j < lineCount; ++j)
{
if ((lines[j] = reader.ReadUTF8StringSafe()).Length >= 80)
if ((lines[j] = reader.ReadUTF8Safe()).Length >= 80)
{
return;
}

View file

@ -41,7 +41,7 @@ namespace Server.Engines.Mahjong
RegisterSubCommand(0x18, MoveDealerIndicator);
}
public static void OnPacket(NetState state, PacketReader reader)
public static void OnPacket(NetState state,PacketReader reader)
{
var game = World.FindItem(reader.ReadUInt32()) as MahjongGame;

View file

@ -315,7 +315,7 @@ namespace Server.Items
}
}
var subject = reader.ReadUTF8StringSafe(reader.ReadByte());
var subject = reader.ReadUTF8Safe(reader.ReadByte());
if (subject.Length == 0)
{
@ -331,7 +331,7 @@ namespace Server.Items
for (var i = 0; i < lines.Length; ++i)
{
lines[i] = reader.ReadUTF8StringSafe(reader.ReadByte());
lines[i] = reader.ReadUTF8Safe(reader.ReadByte());
}
board.PostMessage(from, thread, subject, lines);