doNativeTraversalsAsync method
Implementation
@override
void doNativeTraversalsAsync(ResourceDataHolder holder, FetchResourceCallback callback) {
if (!isInit) {
holder.resultCode = FetchResultCode.ffiError;
holder.errorMsg = 'call native processor error, wrapper is destroyed';
callback(holder);
return;
}
final paramsPair =
encodeObject({_kUriKey: holder.url, _kReqHeadersKey: holder.requestHeaders ?? {}});
if (paramsPair == null) {
holder.resultCode = FetchResultCode.encodeParamsError;
holder.errorMsg = 'call native processor error, invalid params';
callback(holder);
return;
}
_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';
}
callback(holder);
} else {
holder.resultCode = FetchResultCode.invalidResultError;
holder.errorMsg = 'call native processor error, invalid result';
callback(holder);
}
}));
}