diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs index 4a0356e8c..a7414741b 100644 --- a/ArchiSteamFarm/ArchiHandler.cs +++ b/ArchiSteamFarm/ArchiHandler.cs @@ -53,6 +53,16 @@ namespace ArchiSteamFarm { */ + internal sealed class HeartBeatCallback : CallbackMsg { + internal HeartBeatCallback(JobID jobID, CMsgClientHeartBeat msg) { + if ((jobID == null) || (msg == null)) { + throw new ArgumentNullException(nameof(jobID) + " || " + nameof(msg)); + } + + JobID = jobID; + } + } + internal sealed class NotificationsCallback : CallbackMsg { internal enum ENotification : byte { [SuppressMessage("ReSharper", "UnusedMember.Global")] @@ -299,6 +309,9 @@ namespace ArchiSteamFarm { case EMsg.ClientFSOfflineMessageNotification: HandleFSOfflineMessageNotification(packetMsg); break; + case EMsg.ClientHeartBeat: + HandleHeartBeat(packetMsg); + break; case EMsg.ClientItemAnnouncements: HandleItemAnnouncements(packetMsg); break; @@ -324,6 +337,16 @@ namespace ArchiSteamFarm { Client.PostCallback(new OfflineMessageCallback(packetMsg.TargetJobID, response.Body)); } + private void HandleHeartBeat(IPacketMsg packetMsg) { + if (packetMsg == null) { + Logging.LogNullError(nameof(packetMsg), Bot.BotName); + return; + } + + ClientMsgProtobuf response = new ClientMsgProtobuf(packetMsg); + Client.PostCallback(new HeartBeatCallback(packetMsg.TargetJobID, response.Body)); + } + private void HandleItemAnnouncements(IPacketMsg packetMsg) { if (packetMsg == null) { Logging.LogNullError(nameof(packetMsg), Bot.BotName); diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index a71fea2df..fd0bf0e05 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -221,6 +221,7 @@ namespace ArchiSteamFarm { CallbackManager.Subscribe(OnMachineAuth); CallbackManager.Subscribe(OnWebAPIUserNonce); + CallbackManager.Subscribe(OnHeartBeat); CallbackManager.Subscribe(OnNotifications); CallbackManager.Subscribe(OnOfflineMessage); CallbackManager.Subscribe(OnPlayingSessionState); @@ -1965,6 +1966,15 @@ namespace ArchiSteamFarm { } } + private void OnHeartBeat(ArchiHandler.HeartBeatCallback callback) { + if (callback == null) { + Logging.LogNullError(nameof(callback), BotName); + return; + } + + Logging.LogGenericDebug("HeartBeat", BotName); + } + private void OnNotifications(ArchiHandler.NotificationsCallback callback) { if (callback == null) { Logging.LogNullError(nameof(callback), BotName);