namespace Inspectron.Epson;
///
/// Discovery service that returns preconfigured printers instead of performing network discovery
///
public class PreconfiguredDiscoveryService : IDiscoveryService
{
private readonly List _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> DiscoverPrintersAsync(
TimeSpan? timeout = null,
Action? 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);
}
}