run method

  1. @override
Future run(
  1. Context ctx,
  2. Invocation invocation
)
override

Invoke the next invoker.

Implementation

@override
Future<dynamic> run(Context ctx, Invocation invocation) async {
  var f = invocation.urn.flag;
  var c = Proxy.spi<Consumer>(name: Flags.ofProto(f.proto).name);
  var codec = Proxy.spi<Codec>(name: Flags.ofCodec(f.codec).name);
  var input = codec.encode(invocation.parameters);
  var output = await c.consume(ctx, ctx.urn(), invocation.execution, input);
  var rs = codec.decodex(output, invocation.inspector.retype()) as Returns;
  if (Status.success.code != rs.code) {
    throw MeshException(rs.code, rs.message, rs.cause?.text ?? '');
  }
  return rs.content;
}