using Barcode.Host.Shared.DataModels; using Barcode.Host.Shared.KeyboardMouse; using Barcode.Host.Shared.Models.Stateless; namespace Barcode.Host.Server.Services; public class LastScanService : ILastScanService { private readonly List<(EventCode EventCode, char Char)> _EventCodes; public LastScanService() => _EventCodes = new(); void ILastScanService.Clear() { lock (_EventCodes) _EventCodes.Clear(); } void ILastScanService.Add(EventCode eventCode, char @char) { lock (_EventCodes) _EventCodes.Add((eventCode, @char)); } Result ILastScanService.GetScan() { Result result; char[] chars; lock (_EventCodes) chars = _EventCodes.Select(l => l.Char).ToArray(); result = new() { Results = new string(chars), TotalRows = chars.Length }; return result; } int ILastScanService.GetCount() { int result; lock (_EventCodes) result = _EventCodes.Count; return result; } List<(EventCode, char)> ILastScanService.IncludeEventCodes() { List<(EventCode, char)> results = new() { (EventCode.A, 'A'), (EventCode.B, 'B'), (EventCode.C, 'C'), (EventCode.D, 'D'), (EventCode.E, 'E'), (EventCode.F, 'F'), (EventCode.G, 'G'), (EventCode.H, 'H'), (EventCode.I, 'I'), (EventCode.J, 'J'), (EventCode.K, 'K'), (EventCode.L, 'L'), (EventCode.M, 'M'), (EventCode.N, 'N'), (EventCode.O, 'O'), (EventCode.P, 'P'), (EventCode.Q, 'Q'), (EventCode.R, 'R'), (EventCode.S, 'S'), (EventCode.T, 'T'), (EventCode.U, 'U'), (EventCode.V, 'V'), (EventCode.W, 'W'), (EventCode.X, 'X'), (EventCode.Y, 'Y'), (EventCode.Z, 'Z'), (EventCode.Num0, '0'), (EventCode.Num1, '1'), (EventCode.Num2, '2'), (EventCode.Num3, '3'), (EventCode.Num4, '4'), (EventCode.Num5, '5'), (EventCode.Num6, '6'), (EventCode.Num7, '7'), (EventCode.Num8, '8'), (EventCode.Num9, '9'), (EventCode.Minus, '-'), (EventCode.Dot, '.'), (EventCode.Slash, '/'), (EventCode.Space, ' '), }; return results; } }