From: miniduikboot Date: Sat, 26 Feb 2022 19:31:23 +0000 (+0100) Subject: Turn DisconnectConnection into an extension X-Git-Tag: v1.7.0~10^2~2 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=0b0c8274aab1bf36bb38dc4aa81a0f0ca9676771;p=rhonda%2Fimpostor.git Turn DisconnectConnection into an extension --- diff --git a/src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs b/src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs new file mode 100644 index 0000000..d46e370 --- /dev/null +++ b/src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs @@ -0,0 +1,30 @@ +using System.Threading.Tasks; +using Impostor.Api.Innersloth; +using Impostor.Api.Net; +using Impostor.Api.Net.Messages.S2C; +using Impostor.Hazel; + +namespace Impostor.Server +{ + public static class IHazelConnectionExtensions + { + /// + /// Disconnect a connection using a custom message. + /// + /// The connection to disconnect. + /// The message to disconnect with. + /// Task that should be awaited to ensure disconnection. + public static async ValueTask CustomDisconnectAsync(this IHazelConnection connection, string message) + { + if (!connection.IsConnected) + { + return; + } + + using var writer = MessageWriter.Get(); + MessageDisconnect.Serialize(writer, true, DisconnectReason.Custom, message); + + await connection.DisconnectAsync(DisconnectReason.Custom.ToString(), writer); + } + } +} diff --git a/src/Impostor.Server/Net/Manager/ClientManager.cs b/src/Impostor.Server/Net/Manager/ClientManager.cs index 58405b1..94426bf 100644 --- a/src/Impostor.Server/Net/Manager/ClientManager.cs +++ b/src/Impostor.Server/Net/Manager/ClientManager.cs @@ -8,7 +8,6 @@ using Impostor.Api.Events.Managers; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; -using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; using Impostor.Server.Config; using Impostor.Server.Events.Client; @@ -85,19 +84,19 @@ namespace Impostor.Server.Net.Manager _ => throw new ArgumentOutOfRangeException(), }; - await DisconnectConnection(connection, message); + await connection.CustomDisconnectAsync(message); return; } if (name.Length > 10) { - await DisconnectConnection(connection, DisconnectMessages.UsernameLength); + await connection.CustomDisconnectAsync(DisconnectMessages.UsernameLength); return; } if (string.IsNullOrWhiteSpace(name)) { - await DisconnectConnection(connection, DisconnectMessages.UsernameIllegalCharacters); + await connection.CustomDisconnectAsync(DisconnectMessages.UsernameIllegalCharacters); return; } @@ -147,14 +146,5 @@ namespace Impostor.Server.Net.Manager // This may happen in the very rare case that version X is supported, X+2 is as well, but X+1 is not. return VersionCompareResult.Unknown; } - - private async ValueTask DisconnectConnection(IHazelConnection connection, string message) - { - using var writer = MessageWriter.Get(); - MessageDisconnect.Serialize(writer, true, DisconnectReason.Custom, message); - - await connection.DisconnectAsync(DisconnectReason.Custom.ToString(), writer); - return; - } } }