Program.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Device;
  2. using EEMSClientCore;
  3. using ServiceBase;
  4. using Universal;
  5. namespace TestSignalRClient;
  6. internal class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. IClientCaller caller = new ClientCaller();
  11. IClientProvider provider = new ClientProvider(caller);
  12. HubBase hubSender = new();
  13. hubSender.Initialize(provider);
  14. hubSender.Open("localhost", 50054, "ClientHub");
  15. DeviceInfo deviceInfo = new()
  16. {
  17. };
  18. Guid guid = caller.RegisterDevice(deviceInfo).Result;
  19. Console.WriteLine(guid);
  20. Thread.Sleep(-1);
  21. }
  22. }
  23. public class ClientProvider(IClientCaller clientCaller) : IClientProvider
  24. {
  25. Task<bool> IClientProvider.RequestFile(Guid guid, FileType fileType)
  26. {
  27. Console.WriteLine($"RequestFile {guid} {fileType}");
  28. using MemoryStream stream = new();
  29. Compressor.CompressZipFileDirectory(new(@"E:\Recipes"), stream);
  30. return SendFile(guid, stream);
  31. }
  32. private async Task<bool> SendFile(Guid guid, MemoryStream stream)
  33. {
  34. if (!stream.Split(out List<byte[]>? buffer, 8192) || buffer is null)
  35. return false;
  36. for (int i = 0; i < buffer.Count; i++)
  37. {
  38. if (!await clientCaller.FilePack(guid, buffer[i], i + 1, buffer.Count))
  39. return false;
  40. }
  41. return true;
  42. }
  43. }