Files
Print_server/Inspectron.Epson/PreconfiguredDiscoveryService.cs
EugeneTes e90465e286 discount
2026-02-02 12:50:00 +01:00

57 lines
1.6 KiB
C#

namespace Inspectron.Epson;
/// <summary>
/// Discovery service that returns preconfigured printers instead of performing network discovery
/// </summary>
public class PreconfiguredDiscoveryService : IDiscoveryService
{
private readonly List<DiscoveredPrinter> _printers = new();
public void AddPrinter(string ipAddress, string? modelName = null, int port = 9100)
{
_printers.Add(new DiscoveredPrinter
{
IPAddress = ipAddress,
ModelName = modelName ?? "Unknown",
Port = port,
DiscoveredAt = DateTime.UtcNow
});
}
public void RemovePrinter(string ipAddress)
{
_printers.RemoveAll(p => p.IPAddress == ipAddress);
}
public void ClearPrinters()
{
_printers.Clear();
}
public Task<List<DiscoveredPrinter>> DiscoverPrintersAsync(
TimeSpan? timeout = null,
Action<DiscoveredPrinter>? onPrinterDiscovered = null)
{
var results = _printers.Select(p => new DiscoveredPrinter
{
IPAddress = p.IPAddress,
ModelName = p.ModelName,
Port = p.Port,
MACAddress = p.MACAddress,
ServiceUrl = p.ServiceUrl,
ServiceType = p.ServiceType,
Lifetime = p.Lifetime,
RawResponse = p.RawResponse,
DiscoveredAt = DateTime.UtcNow
}).ToList();
if (onPrinterDiscovered != null)
{
foreach (var printer in results)
onPrinterDiscovered(printer);
}
return Task.FromResult(results);
}
}