encode_DartFn_Inputs__Output_unit_AnyhowException method

Future<void> Function(int) encode_DartFn_Inputs__Output_unit_AnyhowException(
  1. FutureOr<void> raw()
)

Implementation

Future<void> Function(
  int,
) encode_DartFn_Inputs__Output_unit_AnyhowException(
    FutureOr<void> Function() raw) {
  return (
    callId,
  ) async {
    Box<void>? rawOutput;
    Box<AnyhowException>? rawError;
    try {
      rawOutput = Box(await raw());
    } catch (e, s) {
      rawError = Box(AnyhowException("$e\n\n$s"));
    }

    final serializer = SseSerializer(generalizedFrbRustBinding);
    assert((rawOutput != null) ^ (rawError != null));
    if (rawOutput != null) {
      serializer.buffer.putUint8(0);
      sse_encode_unit(rawOutput.value, serializer);
    } else {
      serializer.buffer.putUint8(1);
      sse_encode_AnyhowException(rawError!.value, serializer);
    }
    final output = serializer.intoRaw();

    generalizedFrbRustBinding.dartFnDeliverOutput(
        callId: callId,
        ptr: output.ptr,
        rustVecLen: output.rustVecLen,
        dataLen: output.dataLen);
  };
}