IContext.cs 3.4 KB

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