--- /dev/null
+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);
+ }
+ }
+}
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;
_ => 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;
}
// 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;
- }
}
}