From 79dda056b18e3587862bdb2b77a2a15c3a7a462a Mon Sep 17 00:00:00 2001 From: Laci0503 Date: Wed, 24 Jul 2024 11:44:09 +0200 Subject: [PATCH] Instant heartbeat support --- Discord.API/Gateway/AbstractGateway.cs | 4 ++++ Discord.API/Gateway/GatewayClient.cs | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/Discord.API/Gateway/AbstractGateway.cs b/Discord.API/Gateway/AbstractGateway.cs index 98a097b..7792661 100644 --- a/Discord.API/Gateway/AbstractGateway.cs +++ b/Discord.API/Gateway/AbstractGateway.cs @@ -96,6 +96,10 @@ public abstract class AbstractGateway { InstantHeartbeatCts?.Cancel(); } + protected void ImmediateHeartbeat(){ + InstantHeartbeatCts?.Cancel(); + } + #endregion public virtual async Task Close(){ diff --git a/Discord.API/Gateway/GatewayClient.cs b/Discord.API/Gateway/GatewayClient.cs index d0223df..db5978e 100644 --- a/Discord.API/Gateway/GatewayClient.cs +++ b/Discord.API/Gateway/GatewayClient.cs @@ -78,6 +78,9 @@ public class GatewayClient : AbstractGateway { case InvalidSessionPacket invalidSessionPacket: InvalidSessionHandler(invalidSessionPacket); break; + case HeartbeatPacket: + HeartbeatPacketHandler(); + break; default: Log.Debug("GATEWAY: Packet not handled {opcode}", packet.Op); break; @@ -126,6 +129,11 @@ public class GatewayClient : AbstractGateway { Log.Debug("GATEWAY: Resume url: {url}", packet.Data.ResumeGatewayUrl); } + private void HeartbeatPacketHandler(){ + ImmediateHeartbeat(); + Log.Debug("GATEWAY: Remote requested immediate heartbeat"); + } + protected override Task SendHeartbeat() { HeartbeatPacket packet = new(){