send method

Future? send(
  1. String method, {
  2. Map<String, dynamic> params = const {},
  3. bool hasResult = false,
})

Implementation

Future<dynamic>? send(
  String method, {
  Map<String, dynamic> params: const {},
  bool hasResult: false,
}) {
  final _id = _internalId++;
  Map<String, dynamic> dict = <String, dynamic>{};
  dict["method"] = method;
  dict["id"] = _id;
  dict['jsonrpc'] = '2.0';
  dict["params"] = params;
  String jsonString = json.encode(dict);
  _channel.sink.add(jsonString);
  if (!hasResult) return null;

  final completer = Completer<Map<String, dynamic>>();
  _completers[_id] = completer;

  return completer.future.timeout(Duration(seconds: 10), onTimeout: () {
    if (_completers.containsKey(_id)) _completers.remove(_id);
    return Future.error({"code": 1, "message": "Rpc time out"});
  });
}