ClientCaller.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. namespace EEMSServerCore.HubSender;
  2. public class ClientCaller : IClientProvider
  3. {
  4. private Task<bool> SendAsync(Guid guid, string name)
  5. {
  6. if (string.IsNullOrEmpty(name))
  7. return Task.FromResult(false);
  8. if (ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  9. return Task.FromResult(false);
  10. try
  11. {
  12. client.SendAsync(name);
  13. }
  14. catch
  15. {
  16. return Task.FromResult(false);
  17. }
  18. return Task.FromResult(true);
  19. }
  20. private Task<bool> SendAsync<T>(Guid guid, string name, T para)
  21. {
  22. if (string.IsNullOrEmpty(name))
  23. return Task.FromResult(false);
  24. if (ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  25. return Task.FromResult(false);
  26. try
  27. {
  28. client.SendAsync(name, para);
  29. }
  30. catch
  31. {
  32. return Task.FromResult(false);
  33. }
  34. return Task.FromResult(true);
  35. }
  36. private Task<bool> SendAsync<T1, T2>(Guid guid, string name, T1 para1, T2 para2)
  37. {
  38. if (string.IsNullOrEmpty(name))
  39. return Task.FromResult(false);
  40. if (!ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  41. return Task.FromResult(false);
  42. try
  43. {
  44. client.SendAsync(name, para1, para2);
  45. }
  46. catch
  47. {
  48. return Task.FromResult(false);
  49. }
  50. return Task.FromResult(true);
  51. }
  52. private Task<bool> SendAsync<T1, T2, T3>(Guid guid, string name, T1 para1, T2 para2, T3 para3)
  53. {
  54. if (string.IsNullOrEmpty(name))
  55. return Task.FromResult(false);
  56. if (ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  57. return Task.FromResult(false);
  58. try
  59. {
  60. client.SendAsync(name, para1, para2, para3);
  61. }
  62. catch
  63. {
  64. return Task.FromResult(false);
  65. }
  66. return Task.FromResult(true);
  67. }
  68. private Task<bool> SendAsync<T1, T2, T3, T4>(Guid guid, string name, T1 para1, T2 para2, T3 para3, T4 para4)
  69. {
  70. if (string.IsNullOrEmpty(name))
  71. return Task.FromResult(false);
  72. if (ClientManager.DeviceClients.TryGetValue(guid, out ISingleClientProxy? client) || client is null)
  73. return Task.FromResult(false);
  74. try
  75. {
  76. client.SendAsync(name, para1, para2, para3, para4);
  77. }
  78. catch
  79. {
  80. return Task.FromResult(false);
  81. }
  82. return Task.FromResult(true);
  83. }
  84. Task<bool> IClientProvider.RequestFile(Guid guid, FileType fileType)
  85. {
  86. return this.SendAsync(guid, "RequestFile", guid, fileType);
  87. }
  88. }