cvRunAsync<T> function

Future<T> cvRunAsync<T>(
  1. Pointer<CvStatus> func(
    1. CvCallback_1 callback
    ),
  2. void onComplete(
    1. Completer<T> completer,
    2. VoidPtr p
    )
)

Implementation

Future<T> cvRunAsync<T>(
  ffi.Pointer<cvg.CvStatus> Function(cvg.CvCallback_1 callback) func,
  void Function(Completer<T> completer, VoidPtr p) onComplete,
) {
  final completer = Completer<T>();
  late final ffi.NativeCallable<cvg.CvCallback_1Function> ccallback;
  void onResponse(VoidPtr p) {
    onComplete(completer, p);
    ccallback.close();
  }

  ccallback = ffi.NativeCallable.listener(onResponse);
  throwIfFailed(func(ccallback.nativeFunction));
  return completer.future;
}