batchRequest method

  1. @override
Future<List<Map<String, dynamic>>> batchRequest(
  1. List<RpcRequest> requests
)

Sends multiple RPC requests in a batch.

Implementation

@override
Future<List<Map<String, dynamic>>> batchRequest(
    List<RpcRequest> requests) async {
  final batch = requests.map((r) => r.toJson(++_requestId)).toList();
  final body = json.encode(batch);

  final response = await _client
      .post(
        Uri.parse(url),
        headers: {
          'Content-Type': 'application/json',
          ...headers,
        },
        body: body,
      )
      .timeout(timeout);

  if (response.statusCode != 200) {
    throw RpcError(-32000, 'HTTP error: ${response.statusCode}');
  }

  final results = json.decode(response.body) as List;
  return results.cast<Map<String, dynamic>>();
}