HengshanICTermHandler.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump;
  5. using Dfs.WayneChina.HengshanTerminalWrapper.MessageEntity.Base;
  6. namespace Dfs.WayneChina.HengshanTerminalWrapper
  7. {
  8. public class HengshanICTermHandler : IDeviceHandler<byte[], NonCardDispenserMessageTemplateBase>
  9. {
  10. #region Fields
  11. private readonly int pumpId;
  12. private object syncObj = new object();
  13. NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("HengshanPos");
  14. private Queue<NonCardDispenserMessageTemplateBase> terminalMsgQueue = new Queue<NonCardDispenserMessageTemplateBase>();
  15. #endregion
  16. #region Properties
  17. public IContext<byte[], NonCardDispenserMessageTemplateBase> TerminalContext { get; set; }
  18. public int AssociatedPumpId => pumpId;
  19. public event EventHandler<HengshanTerminalMessageEventArgs> OnTerminalMessageReceived;
  20. #endregion
  21. #region Construction
  22. public HengshanICTermHandler(int pumpId)
  23. {
  24. this.pumpId = pumpId;
  25. logger.Debug($"Associated pump id = {pumpId}");
  26. Console.WriteLine($"Associated pump id = {pumpId}");
  27. }
  28. #endregion
  29. #region IHandler implementations
  30. public void Init(IContext<byte[], NonCardDispenserMessageTemplateBase> context)
  31. {
  32. TerminalContext = context;
  33. }
  34. public Task Process(IContext<byte[], NonCardDispenserMessageTemplateBase> context)
  35. {
  36. //if (terminalMsgQueue.Count > 0)
  37. //{
  38. // var message = terminalMsgQueue.Dequeue();
  39. // TerminalContext.Outgoing.Write(message);
  40. //}
  41. OnTerminalMessageReceived?.Invoke(this, new HengshanTerminalMessageEventArgs(pumpId, context.Incoming.Message));
  42. return Task.CompletedTask;
  43. }
  44. public void Write(NonCardDispenserMessageTemplateBase responseMessage)
  45. {
  46. lock (syncObj)
  47. {
  48. //terminalMsgQueue.Enqueue(responseMessage);
  49. TerminalContext.Outgoing.Write(responseMessage);
  50. }
  51. }
  52. #endregion
  53. }
  54. }