blob: 43274a718fe20b901b82f675812c8d8be5f4a547 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
part of zircon;
final _kZirconFFILibName = 'libzircon_ffi.so';
final _kLibZirconDartPath = '/pkg/lib/$_kZirconFFILibName';
class _Bindings {
static ZirconFFIBindings? _bindings;
@pragma('vm:entry-point')
static ZirconFFIBindings? get() {
// For soft-transition until libzircon_ffi.so rolls into GI.
if (!File(_kLibZirconDartPath).existsSync()) {
return null;
}
if (_bindings == null) {
final _dylib = DynamicLibrary.open(_kZirconFFILibName);
_bindings = ZirconFFIBindings(_dylib);
}
final initializer = _bindings!.zircon_dart_dl_initialize;
if (initializer(NativeApi.initializeApiDLData) != 1) {
throw UnsupportedError('Unable to initialize dart:zircon_ffi.');
}
return _bindings;
}
}
final ZirconFFIBindings? zirconFFIBindings = _Bindings.get();