using System; using System.Collections.Generic; using System.Threading.Tasks; using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump; using Dfs.WayneChina.HengshanTerminalWrapper.MessageEntity.Base; namespace Dfs.WayneChina.HengshanTerminalWrapper { public class HengshanICTermHandler : IDeviceHandler { #region Fields private readonly int pumpId; private object syncObj = new object(); NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("HengshanPos"); private Queue terminalMsgQueue = new Queue(); #endregion #region Properties public IContext TerminalContext { get; set; } public int AssociatedPumpId => pumpId; public event EventHandler OnTerminalMessageReceived; #endregion #region Construction public HengshanICTermHandler(int pumpId) { this.pumpId = pumpId; logger.Debug($"Associated pump id = {pumpId}"); Console.WriteLine($"Associated pump id = {pumpId}"); } #endregion #region IHandler implementations public void Init(IContext context) { TerminalContext = context; } public Task Process(IContext context) { //if (terminalMsgQueue.Count > 0) //{ // var message = terminalMsgQueue.Dequeue(); // TerminalContext.Outgoing.Write(message); //} OnTerminalMessageReceived?.Invoke(this, new HengshanTerminalMessageEventArgs(pumpId, context.Incoming.Message)); return Task.CompletedTask; } public void Write(NonCardDispenserMessageTemplateBase responseMessage) { lock (syncObj) { //terminalMsgQueue.Enqueue(responseMessage); TerminalContext.Outgoing.Write(responseMessage); } } #endregion } }