doNativeTraversalsSync method
Implementation
@override
Future<void> doNativeTraversalsSync(ResourceDataHolder holder) {
var completer = Completer();
if (!isInit) {
holder.resultCode = FetchResultCode.ffiError;
holder.errorMsg = 'call native processor error, wrapper is destroyed';
completer.complete();
} else {
final paramsPair =
encodeObject({_kUriKey: holder.url, _kReqHeadersKey: holder.requestHeaders ?? {}});
if (paramsPair == null) {
holder.resultCode = FetchResultCode.encodeParamsError;
holder.errorMsg = 'call native processor error, invalid params';
completer.complete();
} else {
_api._onDartInvoke(_id, paramsPair.left, paramsPair.right, generateCallback((value) {
if (value is Map) {
holder.resultCode = parseResultCode(value.safeGet<int>(_kResultCodeKey) ?? -1);
holder.buffer = value.safeGet<Uint8List>(_kBufferKey);
holder.responseHeaders = value.safeGetMap<String, String>(_kRspHeadersKey);
if (holder.resultCode != FetchResultCode.ok) {
holder.errorMsg = 'call native processor error';
}
} else {
holder.resultCode = FetchResultCode.invalidResultError;
holder.errorMsg = 'call native processor error, invalid result';
}
completer.complete();
}));
}
}
return completer.future;
}