MQEventData{TData,T}.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using EventBus;
  2. namespace ActiveMQCommunication
  3. {
  4. public class MQEventData<TData, T> : IEventData<TData, T>
  5. {
  6. EasyMQ.IBus _Bus;
  7. public MQEventData(EasyMQ.IBus bus,string eventName,string hash)
  8. {
  9. _Bus = bus;
  10. EventName = eventName;
  11. Hash = hash;
  12. }
  13. public string EventName { get; private set; }
  14. public string Hash { get; private set; }
  15. public void Clear()
  16. {
  17. }
  18. public T Publish(object sender, TData data, Properties? properties = null)
  19. {
  20. bool timeout = false;
  21. var val = _Bus.RPC.Request<TData, T>(data, ref timeout, properties == null ?null: properties.PropertiesToDic());
  22. if (timeout || val==null) return default;
  23. return val;
  24. }
  25. public Task<T> PublishAsync(object sender, TData data, Properties? properties = null)
  26. {
  27. return Task.Run(() => Publish(sender, data, properties));
  28. }
  29. public List<T> PublishList(object sender, TData data, Properties? properties = null)
  30. {
  31. bool timeout = false;
  32. var val = _Bus.RPC.Request<TData, List<T>>(data, ref timeout, properties == null ? null : properties.PropertiesToDic());
  33. if (timeout || val == null) return new List<T>();
  34. return val;
  35. }
  36. public Task<List<T>> PublishListAsync(object sender, TData data, Properties? properties = null)
  37. {
  38. return Task.Run(() => PublishList(sender, data, properties));
  39. }
  40. public Guid Subscrip(Func<object, EventArgs<TData>, T> func, Properties? properties = null)
  41. {
  42. _Bus.RPC.Respond<TData, T>((data, pro) =>
  43. {
  44. return func.Invoke(this, new EventArgs<TData>(data, Guid.Empty, this));
  45. },properties==null?"":properties.PropertiesToselector());
  46. return Guid.Empty;
  47. }
  48. public Guid SubscripList(Func<object, EventArgs<TData>, List<T>> func, Properties? properties = null)
  49. {
  50. _Bus.RPC.Respond<TData, List<T>>((data, pro) =>
  51. {
  52. return func.Invoke(this, new EventArgs<TData>(data, Guid.Empty, this));
  53. }, properties == null ? "" : properties.PropertiesToselector());
  54. return Guid.Empty;
  55. }
  56. public void UnSubscrip(Guid guid)
  57. {
  58. }
  59. }
  60. }