ParsingResult.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using JsonRPC4.Common;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. namespace JsonRPC4.Router
  7. {
  8. public class ParsingResult
  9. {
  10. public List<RpcRequest> Requests
  11. {
  12. get;
  13. }
  14. public List<(RpcId Id, RpcError Error)> Errors
  15. {
  16. get;
  17. }
  18. public bool IsBulkRequest
  19. {
  20. get;
  21. }
  22. public int RequestCount => Requests.Count + Errors.Count;
  23. public ParsingResult(List<RpcRequest> requests, List<(RpcId, RpcError)> errors, bool isBulkRequest)
  24. {
  25. Requests = requests;
  26. Errors = errors;
  27. IsBulkRequest = isBulkRequest;
  28. }
  29. internal static ParsingResult FromResults(List<RpcRequestParseResult> results, bool isBulkRequest)
  30. {
  31. List<RpcRequest> list = new List<RpcRequest>();
  32. List<(RpcId, RpcError)> list2 = new List<(RpcId, RpcError)>();
  33. foreach (RpcRequestParseResult result in results)
  34. {
  35. if (result.Error != null)
  36. {
  37. list2.Add((result.Id, result.Error));
  38. }
  39. else
  40. {
  41. list.Add(new RpcRequest(result.Id, result.Method, result.Parameters));
  42. }
  43. }
  44. isBulkRequest = (isBulkRequest || list.Count + list2.Count > 1);
  45. return new ParsingResult(list, list2, isBulkRequest);
  46. }
  47. }
  48. }