Skip to content

Commit

Permalink
update allo-isolate and dart-bingen
Browse files Browse the repository at this point in the history
  • Loading branch information
Shady Khalifa committed Jun 27, 2020
1 parent 9ab8816 commit 1a6a3d4
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 54 deletions.
22 changes: 11 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions native/scrap-ffi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ crate-type = ["cdylib", "staticlib"]
scrap = { path = "../scrap" }
tokio = { version = "0.2", features = ["rt-threaded"] }
ffi_helpers = "0.2"
allo-isolate = "0.1"
allo-isolate = "0.1.2"
lazy_static = "1.4"

[build-dependencies]
cbindgen = "0.14.2"
dart-bindgen = "0.1"
cbindgen = "0.14.3"
dart-bindgen = "0.1.1"
1 change: 1 addition & 0 deletions native/scrap-ffi/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ fn main() {
.with_src_header("binding.h")
.with_lib_name("libscrap")
.with_config(config)
.with_allo_isolate()
.build()
.unwrap();
// generate the dart code and get the bindings back
Expand Down
7 changes: 2 additions & 5 deletions native/scrap-ffi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,7 @@ pub unsafe extern "C" fn error_message_utf8(buf: *mut raw::c_char, length: i32)
pub extern "C" fn load_page(port: i64, url: *const raw::c_char) -> i32 {
let rt = runtime!();
let url = cstr!(url);
rt.spawn(async move {
let result = scrap::load_page(url).await;
let isolate = Isolate::new(port);
isolate.post(result);
});
let t = Isolate::new(port).task(scrap::load_page(url));
rt.spawn(t);
1
}
2 changes: 1 addition & 1 deletion packages/adder_ffi/lib/ffi.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/// bindings for `libaddr`
import 'dart:io';
import 'dart:ffi';
import 'package:ffi/ffi.dart' as ffi;
import 'dart:io';

// ignore_for_file: unused_import, camel_case_types, non_constant_identifier_names
final DynamicLibrary _dl = _open();
Expand Down
56 changes: 22 additions & 34 deletions packages/scrap_ffi/lib/ffi.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/// bindings for `libscrap`
import 'dart:ffi';
import 'package:ffi/ffi.dart' as ffi;
import 'dart:io';
import 'package:ffi/ffi.dart' as ffi;
import 'dart:ffi';

// ignore_for_file: unused_import, camel_case_types, non_constant_identifier_names
final DynamicLibrary _dl = _open();
Expand All @@ -19,10 +19,7 @@ int error_message_utf8(
) {
return _error_message_utf8(buf, length);
}

final _error_message_utf8_Dart _error_message_utf8 =
_dl.lookupFunction<_error_message_utf8_C, _error_message_utf8_Dart>(
'error_message_utf8');
final _error_message_utf8_Dart _error_message_utf8 = _dl.lookupFunction<_error_message_utf8_C, _error_message_utf8_Dart>('error_message_utf8');
typedef _error_message_utf8_C = Int32 Function(
Pointer<ffi.Utf8> buf,
Int32 length,
Expand All @@ -32,16 +29,22 @@ typedef _error_message_utf8_Dart = int Function(
int length,
);

/// C function `last_error_length`.
int last_error_length() {
return _last_error_length();
}
final _last_error_length_Dart _last_error_length = _dl.lookupFunction<_last_error_length_C, _last_error_length_Dart>('last_error_length');
typedef _last_error_length_C = Int32 Function();
typedef _last_error_length_Dart = int Function();

/// C function `load_page`.
int load_page(
int port,
Pointer<ffi.Utf8> url,
) {
return _load_page(port, url);
}

final _load_page_Dart _load_page =
_dl.lookupFunction<_load_page_C, _load_page_Dart>('load_page');
final _load_page_Dart _load_page = _dl.lookupFunction<_load_page_C, _load_page_Dart>('load_page');
typedef _load_page_C = Int32 Function(
Int64 port,
Pointer<ffi.Utf8> url,
Expand All @@ -51,31 +54,16 @@ typedef _load_page_Dart = int Function(
Pointer<ffi.Utf8> url,
);

/// C function `last_error_length`.
int last_error_length() {
return _last_error_length();
}

final _last_error_length_Dart _last_error_length =
_dl.lookupFunction<_last_error_length_C, _last_error_length_Dart>(
'last_error_length');
typedef _last_error_length_C = Int32 Function();
typedef _last_error_length_Dart = int Function();

// THIS ADDED BY ME, dart-bingen has to integrate with `allo-isolate`

/// C function `store_dart_post_cobject`.
Pointer store_dart_post_cobject(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr) {
return _store_dart_post_cobject(ptr);
void store_dart_post_cobject(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr,
) {
_store_dart_post_cobject(ptr);
}

final _store_dart_post_cobject = _dl
.lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>(
'store_dart_post_cobject',
final _store_dart_post_cobject_Dart _store_dart_post_cobject = _dl.lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>('store_dart_post_cobject');
typedef _store_dart_post_cobject_C = Void Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr,
);
typedef _store_dart_post_cobject_Dart = void Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr,
);

typedef _store_dart_post_cobject_C = Pointer Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>>);
typedef _store_dart_post_cobject_Dart = Pointer Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>>);

0 comments on commit 1a6a3d4

Please sign in to comment.