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