run method

  1. @override
RunResult run(
  1. int handle
)
override

Runs the handle to completion.

Implementation

@override
RunResult run(int handle) {
  final ptr = Pointer<ffi_native.MontyHandle>.fromAddress(handle);
  final outResult = calloc<Pointer<Char>>();
  final outError = calloc<Pointer<Char>>();

  try {
    final tag = ffi_native.monty_run(ptr, outResult, outError);
    final resultJson = _readAndFreeString(outResult.value);
    final errorMsg = _readAndFreeString(outError.value);

    return RunResult(
      tag: tag.value,
      resultJson: resultJson,
      errorMessage: errorMsg,
    );
  } finally {
    calloc
      ..free(outResult)
      ..free(outError);
  }
}