IContext.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Edge.Core.Parser.BinaryParser.MessageEntity;
  7. using Edge.Core.Parser;
  8. using Edge.Core.Processor;
  9. using Edge.Core.IndustryStandardInterface.Pump;
  10. using Edge.Core.Processor.Communicator;
  11. namespace Edge.Core.Processor
  12. {
  13. public interface IContext<TRaw, TMessage> : IDisposable where TMessage : MessageBase
  14. {
  15. //event EventHandler OnCommunicatorConnected;
  16. IDeviceProcessor<TRaw, TMessage> Processor { get; }
  17. IDeviceHandler<TRaw, TMessage> Handler { get; }
  18. ICommunicator<TRaw, TMessage> Communicator { get; }
  19. IIncoming<TMessage> Incoming { get; }
  20. IOutgoing<TRaw, TMessage> Outgoing { get; }
  21. }
  22. //public interface IBinaryContext<TMessage> : IContext<byte[], TMessage>
  23. //{
  24. // IHandler<TMessage> Handler { get; }
  25. // IDeviceProcessor<byte[], TMessage> Processor { get; }
  26. // Incoming<byte[], TMessage> Incoming { get; }
  27. // Outgoing<byte[], TMessage> Outgoing { get; }
  28. //}
  29. public class Context<TRaw, TMessage> : IContext<TRaw, TMessage> where TMessage : MessageBase
  30. {
  31. //public event EventHandler OnCommunicatorConnected;
  32. //public event EventHandler OnCommunicatorDisconnected;
  33. public IDeviceProcessor<TRaw, TMessage> Processor { get; }
  34. public IDeviceHandler<TRaw, TMessage> Handler { get; }
  35. public ICommunicator<TRaw, TMessage> Communicator { get; }
  36. public IIncoming<TMessage> Incoming { get; }
  37. public IOutgoing<TRaw, TMessage> Outgoing { get; }
  38. public Context(IDeviceProcessor<TRaw, TMessage> processor, IDeviceHandler<TRaw, TMessage> handler, ICommunicator<TRaw, TMessage> communicator, IIncoming<TMessage> incoming, IOutgoing<TRaw, TMessage> outgoing)
  39. {
  40. this.Processor = processor;
  41. this.Communicator = communicator;
  42. this.Incoming = incoming;// new HistoryKeepIncoming<TMessage>(10);
  43. this.Outgoing = outgoing;// new Outgoing<TRaw, TMessage>(this);
  44. this.Handler = handler;
  45. }
  46. public void Dispose()
  47. {
  48. if (this.Incoming is IDisposable idp)
  49. idp.Dispose();
  50. if (this.Outgoing is IDisposable odp)
  51. odp.Dispose();
  52. }
  53. }
  54. //public class HttpStringContext<TMessage> : IContext<TMessage> where TMessage : MessageBase
  55. //{
  56. // public event EventHandler OnCommunicatorConnected;
  57. // public event EventHandler OnCommunicatorDisconnected;
  58. // public IHandler<TMessage> Handler { get; }
  59. // //public IDeviceProcessor<byte[], TMessage> Processor { get; }
  60. // public Incoming<TMessage> Incoming { get; }
  61. // public Outgoing<TMessage> Outgoing { get; }
  62. // public HttpStringContext(IHandler<TMessage> handler, ICommunicator<string, TMessage> communicator, IDeviceProcessor<string, TMessage> processor)
  63. // {
  64. // this.Incoming = new HistoryKeepIncoming<TMessage>(10);
  65. // this.Outgoing = new Outgoing<TMessage>(this);
  66. // this.Handler = handler;
  67. // communicator.OnConnected += (a, b) =>
  68. // {
  69. // var s = this.OnCommunicatorConnected;
  70. // s?.Invoke(this, null);
  71. // };
  72. // communicator.OnDisconnected += (a, b) =>
  73. // {
  74. // var s = this.OnCommunicatorDisconnected;
  75. // s?.Invoke(this, null);
  76. // };
  77. // }
  78. //}
  79. }