]> git.deb.at Git - rhonda/impostor.git/commitdiff
Turn DisconnectConnection into an extension
authorminiduikboot <mini@duikbo.at>
Sat, 26 Feb 2022 19:31:23 +0000 (20:31 +0100)
committerminiduikboot <mini@duikbo.at>
Sat, 26 Feb 2022 19:31:23 +0000 (20:31 +0100)
src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs [new file with mode: 0644]
src/Impostor.Server/Net/Manager/ClientManager.cs

diff --git a/src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs b/src/Impostor.Server/Extensions/IHazelConnectionExtensions.cs
new file mode 100644 (file)
index 0000000..d46e370
--- /dev/null
@@ -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
+    {
+        /// <summary>
+        /// Disconnect a connection using a custom message.
+        /// </summary>
+        /// <param name="connection">The connection to disconnect.</param>
+        /// <param name="message">The message to disconnect with.</param>
+        /// <returns>Task that should be awaited to ensure disconnection.</returns>
+        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);
+        }
+    }
+}
index 58405b114f610764423ba2c3b8091b973f558434..94426bf275603d5753a8fbecf90f5af2d17afa89 100644 (file)
@@ -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;
-        }
     }
 }