HttpHandler.updates.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 
  2. using BeetleX.Light.Memory;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Text;
  7. using System.Text.Json;
  8. using System.Threading.Tasks;
  9. namespace PlatformBenchmarks
  10. {
  11. public partial class HttpHandler
  12. {
  13. public async ValueTask updates(string queryString, IStreamWriter stream)
  14. {
  15. int count = 1;
  16. if (!string.IsNullOrEmpty(queryString))
  17. {
  18. var values = queryString.Split('=');
  19. if (values.Length > 1)
  20. {
  21. if (int.TryParse(values[1], out int size))
  22. {
  23. count = size;
  24. }
  25. }
  26. }
  27. if (count > 500)
  28. count = 500;
  29. if (count < 1)
  30. count = 1;
  31. ContentLengthMemory content = new ContentLengthMemory();
  32. try
  33. {
  34. var data = await _db.LoadMultipleUpdatesRows(count);
  35. stream.Write(_jsonResultPreamble.Data, 0, _jsonResultPreamble.Length);
  36. content.Data = GetContentLengthMemory(stream);
  37. GMTDate.Default.Write(stream);
  38. stream.WriteSequenceNetStream.StartWriteLength();
  39. JsonSerializer.Serialize((Stream)stream.WriteSequenceNetStream, data);
  40. }
  41. catch (Exception e_)
  42. {
  43. Context.GetLoger(BeetleX.Light.Logs.LogLevel.Error)?.WriteException(Context, "PlatformBenchmarks", "updates", e_);
  44. stream.WriteString(e_.Message);
  45. }
  46. var len = stream.WriteSequenceNetStream.EndWriteLength();
  47. content.Full(len);
  48. }
  49. }
  50. }