start method
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);
}