getGeopositionAsyncWithAgeAndTimeout method
Implementation
Future<Geoposition?> getGeopositionAsyncWithAgeAndTimeout(
Duration maximumAge, Duration timeout) {
final retValuePtr = calloc<COMObject>();
final completer = Completer<Geoposition?>();
final maximumAgeDuration = maximumAge.inMicroseconds * 10;
final timeoutDuration = timeout.inMicroseconds * 10;
final hr =
ptr.ref.vtable
.elementAt(14)
.cast<
Pointer<
NativeFunction<
HRESULT Function(Pointer, Uint64 maximumAge,
Uint64 timeout, Pointer<COMObject>)>>>()
.value
.asFunction<
int Function(Pointer, int maximumAge, int timeout,
Pointer<COMObject>)>()(
ptr.ref.lpVtbl, maximumAgeDuration, timeoutDuration, retValuePtr);
if (FAILED(hr)) {
free(retValuePtr);
throw WindowsException(hr);
}
final asyncOperation = IAsyncOperation<Geoposition?>.fromRawPointer(
retValuePtr,
creator: Geoposition.fromRawPointer);
completeAsyncOperation(
asyncOperation, completer, asyncOperation.getResults);
return completer.future;
}