ClientCaller.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. 
  2. namespace EEMSServerCore.HubSender;
  3. public class ClientCaller : IClientProvider
  4. {
  5. #region Internal Send
  6. private Task<bool> SendAsync(Guid guid, string name)
  7. {
  8. if (string.IsNullOrEmpty(name))
  9. return Task.FromResult(false);
  10. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  11. return Task.FromResult(false);
  12. try
  13. {
  14. client.SendAsync(name);
  15. }
  16. catch
  17. {
  18. return Task.FromResult(false);
  19. }
  20. return Task.FromResult(true);
  21. }
  22. private Task<bool> SendAsync<T>(Guid guid, string name, T para)
  23. {
  24. if (string.IsNullOrEmpty(name))
  25. return Task.FromResult(false);
  26. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  27. return Task.FromResult(false);
  28. try
  29. {
  30. client.SendAsync(name, para);
  31. }
  32. catch
  33. {
  34. return Task.FromResult(false);
  35. }
  36. return Task.FromResult(true);
  37. }
  38. private Task<bool> SendAsync<T1, T2>(Guid guid, string name, T1 para1, T2 para2)
  39. {
  40. if (string.IsNullOrEmpty(name))
  41. return Task.FromResult(false);
  42. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  43. return Task.FromResult(false);
  44. try
  45. {
  46. client.SendAsync(name, para1, para2);
  47. }
  48. catch
  49. {
  50. return Task.FromResult(false);
  51. }
  52. return Task.FromResult(true);
  53. }
  54. private Task<bool> SendAsync<T1, T2, T3>(Guid guid, string name, T1 para1, T2 para2, T3 para3)
  55. {
  56. if (string.IsNullOrEmpty(name))
  57. return Task.FromResult(false);
  58. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  59. return Task.FromResult(false);
  60. try
  61. {
  62. client.SendAsync(name, para1, para2, para3);
  63. }
  64. catch
  65. {
  66. return Task.FromResult(false);
  67. }
  68. return Task.FromResult(true);
  69. }
  70. private Task<bool> SendAsync<T1, T2, T3, T4>(Guid guid, string name, T1 para1, T2 para2, T3 para3, T4 para4)
  71. {
  72. if (string.IsNullOrEmpty(name))
  73. return Task.FromResult(false);
  74. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  75. return Task.FromResult(false);
  76. try
  77. {
  78. client.SendAsync(name, para1, para2, para3, para4);
  79. }
  80. catch
  81. {
  82. return Task.FromResult(false);
  83. }
  84. return Task.FromResult(true);
  85. }
  86. private Task<bool> SendAsync<T1, T2, T3, T4, T5>(Guid guid, string name, T1 para1, T2 para2, T3 para3, T4 para4, T5 para5)
  87. {
  88. if (string.IsNullOrEmpty(name))
  89. return Task.FromResult(false);
  90. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  91. return Task.FromResult(false);
  92. try
  93. {
  94. client.SendAsync(name, para1, para2, para3, para4, para5);
  95. }
  96. catch
  97. {
  98. return Task.FromResult(false);
  99. }
  100. return Task.FromResult(true);
  101. }
  102. #endregion
  103. Task<bool> IClientProvider.RequestFile(Guid guid, FileType fileType)
  104. {
  105. return this.SendAsync(guid, "RequestFile", guid, fileType);
  106. }
  107. Task<bool> IClientProvider.PushFile(Guid guid, FileType fileType, byte[] buffer, int current, int total)
  108. {
  109. return this.SendAsync(guid, "PushFile", guid, fileType, buffer, current, total);
  110. }
  111. Task<bool> IClientProvider.UpdateDeviceInfo(Guid guid, DeviceInfo deviceInfo)
  112. {
  113. return this.SendAsync(guid, "UpdateDeviceInfo", guid, deviceInfo);
  114. }
  115. }