NativeHandle<T extends NativeType> constructor
NativeHandle<T extends NativeType> (})
Wraps _ptr and attaches a ffi.NativeFinalizer calling freeFn (for
example, addresses.EVP_PKEY_free or addresses.X509_free).
Implementation
NativeHandle(
this._ptr,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<T>)>> freeFn, {
int externalSize = 4096,
}) : _rawFree = freeFn
.cast<ffi.NativeFinalizerFunction>()
.asFunction<void Function(ffi.Pointer<ffi.Void>)>(),
_finalizer = _finalizers.putIfAbsent(
freeFn.address,
() => ffi.NativeFinalizer(freeFn.cast()),
) {
if (_ptr == ffi.nullptr) {
throw StateError('Cannot wrap nullptr in NativeHandle<$T>');
}
_finalizer.attach(
this,
_ptr.cast(),
detach: this,
externalSize: externalSize,
);
}