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); } }