start method

  1. @override
Future<CoreProgressResult> start(
  1. String code, {
  2. String? extFnsJson,
  3. String? limitsJson,
  4. String? scriptName,
})

Starts iterative execution of code with optional external functions.

Implementation

@override
Future<CoreProgressResult> start(
  String code, {
  String? extFnsJson,
  String? limitsJson,
  String? scriptName,
}) async {
  final extFns = _parseExtFns(extFnsJson);
  final handle = _bindings.create(
    code,
    externalFunctions: extFns,
    scriptName: scriptName,
  );
  final hid = _bindings.getHandleId(handle);
  _handleId = hid;
  if (hid > 0) {
    onHandleCreated?.call(hid);
  }
  final ProgressResult progress;
  try {
    _applyLimits(handle, limitsJson);
    progress = _bindings.start(handle);
  } catch (e) {
    _bindings.free(handle);
    _handleId = null;
    rethrow;
  }
  // Translation assumes ownership of handle lifecycle
  // (_freeHandle on complete/error, _handle assignment on pending).
  return _translateProgressResult(handle, progress);
}