Skip to content

Commit

Permalink
Merge pull request #13 from BioforestChain/rust
Browse files Browse the repository at this point in the history
开启后端自定义加载
  • Loading branch information
waterbang authored Sep 21, 2022
2 parents d00d8c6 + ad93245 commit 49b7b8f
Show file tree
Hide file tree
Showing 8 changed files with 282 additions and 380 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@ class DenoService : IntentService("DenoService") {

private external fun denoSetCallback(callback: IDenoCallback)
private external fun nativeSetCallback(callback: IHandleCallback)
private external fun initDeno(assets: AssetManager)
private external fun initDeno(assets: AssetManager,target:String)
external fun backDataToRust(
bufferData: ByteArray,
)

external fun denoRuntime(assets: AssetManager, path: String)

@Deprecated("Deprecated in Java")
override fun onHandleIntent(p0: Intent?) {
val appContext = applicationContext
// rust 通知 kotlin doing sting
Expand All @@ -63,7 +64,7 @@ class DenoService : IntentService("DenoService") {
warpCallback(bytes, false) // 单工模式不要存储
}
})
initDeno(appContext.assets) // BFS初始化的操作
initDeno(appContext.assets,"/ar/plaoc/bfs-service/index.mjs") // BFS初始化的操作
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ fun DWebView(
if (suffixIndex == -1) {
return dataGateWay(request)
}
// 拦截,跳过本地和远程脚本
// 跳过白名单
if (jumpWhitelist(url)) {
// 拦截视图文件
if (url.endsWith(".html")) {
Expand Down Expand Up @@ -386,9 +386,8 @@ fun DWebView(
if (request !== null) {
// 这里出来的url全部都用是小写,俺觉得这是个bug
val url = request.url.toString()
// 拦截,跳过本地和远程脚本
// 跳过白名单
if (jumpWhitelist(url)) {

// 拦截视图文件
if (url.endsWith(".html")) {
return viewGateWay(customUrlScheme, request)
Expand Down
2 changes: 1 addition & 1 deletion rust_lib/build-android.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
RUST_BACKTRACE=1 cargo build --target=aarch64-linux-android
RUST_BACKTRACE=1 cargo build --target=aarch64-linux-android --release
node copy-to-android.cjs
44 changes: 22 additions & 22 deletions rust_lib/runtime/worker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ impl MainWorker {
permissions: Permissions,
options: WorkerOptions,
) -> Self {
// log::info!("main bootstrap_from_options 1");
log::info!("main bootstrap_from_options 1");
let bootstrap_options = options.bootstrap.clone();
// log::info!("main bootstrap_from_options 2");
log::info!("main bootstrap_from_options 2");
let mut worker = Self::from_options(main_module, permissions, options);
// log::info!("main bootstrap_from_options 3");
log::info!("main bootstrap_from_options 3");
worker.bootstrap(&bootstrap_options);
// log::info!("main bootstrap_from_options 4");
log::info!("main bootstrap_from_options 4");
worker
}

Expand Down Expand Up @@ -197,7 +197,7 @@ impl MainWorker {
);
}

log::info!("main from_options 3");
// log::info!("main from_options 3");
Self {
js_runtime,
should_break_on_first_statement: options.should_break_on_first_statement,
Expand All @@ -206,23 +206,23 @@ impl MainWorker {
}

pub fn bootstrap(&mut self, options: &BootstrapOptions) {
// log::info!("main bootstrap 1");
// let script = format!("bootstrap.mainRuntime({})", options.as_json());
// log::info!("main bootstrap 1.1");
// self.execute_script("gaubee:test1", "typeof console").unwrap();
// log::info!("main bootstrap 1.2");
// self.execute_script("gaubee:test2", "Deno.core.print(\"gaubee:test2\",true)").unwrap();
// log::info!("main bootstrap 1.3");
// self
// .execute_script("gaubee:test3", "Deno.core.print(typeof console,true)").unwrap();
// log::info!("main bootstrap 1.4");
// self
// .execute_script("gaubee:test4", "console.log(678)").unwrap();
// log::info!("main bootstrap 2:{}", script);
// self
// .execute_script(&located_script_name!(), &script)
// .expect("Failed to execute bootstrap script");
// log::info!("main bootstrap 3");
log::info!("main bootstrap 1");
let script = format!("bootstrap.mainRuntime({})", options.as_json());
log::info!("main bootstrap 1.1");
self.execute_script("gaubee:test1", "typeof console").unwrap();
log::info!("main bootstrap 1.2");
self.execute_script("gaubee:test2", "Deno.core.print(\"gaubee:test2\",true)").unwrap();
log::info!("main bootstrap 1.3");
self
.execute_script("gaubee:test3", "Deno.core.print(typeof console,true)").unwrap();
log::info!("main bootstrap 1.4");
self
.execute_script("gaubee:test4", "console.log(678)").unwrap();
log::info!("main bootstrap 2:{}", script);
self
.execute_script(&located_script_name!(), &script)
.expect("Failed to execute bootstrap script");
log::info!("main bootstrap 3");
}

/// See [JsRuntime::execute_script](deno_core::JsRuntime::execute_script)
Expand Down
5 changes: 3 additions & 2 deletions rust_lib/src/android/deno.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ pub async extern "system" fn Java_org_bfchain_rust_plaoc_DenoService_initDeno(
env: JNIEnv,
_context: JObject,
jasset_manager: JObject,
terget:JString
) {
log::info!("启动BFS后端!!");
android_logger::init_once(
Expand All @@ -39,12 +40,12 @@ pub async extern "system" fn Java_org_bfchain_rust_plaoc_DenoService_initDeno(
let asset_manager_ptr = unsafe {
ndk_sys::AAssetManager_fromJava(env.get_native_interface(), jasset_manager.cast())
};

let entrance: String = env.get_string(terget).unwrap().into();
bootstrap_deno_runtime(
Arc::new(AssetsModuleLoader::from_ptr(
NonNull::new(asset_manager_ptr).unwrap(),
)),
"/test-vue3/bfs-service/index.mjs",
&entrance,
// "/assets/hello_runtime.js",
)
.await
Expand Down
3 changes: 2 additions & 1 deletion rust_lib/src/my_deno_runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ fn create_web_worker_callback(
stdio: stdio.clone(),
};

log::info!("bootstrap_from_options: {:?}", args.name);
// log::info!("bootstrap_from_options: {:?}", args.name);

WebWorker::bootstrap_from_options(
args.name,
Expand Down Expand Up @@ -169,6 +169,7 @@ pub async fn bootstrap_deno_runtime(
#[cfg(not(target_os = "android"))] module_loader_builder: fn()->Rc<dyn ModuleLoader>,
entry_js_path: &str,
) -> Result<(), AnyError> {
log::info!("start deno runtime for entry_js_path!!!{:}", &entry_js_path);
let main_module = deno_core::resolve_path(entry_js_path)?;
let permissions = Permissions::allow_all();

Expand Down
6 changes: 3 additions & 3 deletions test-vue3/bfs-service/#bfsp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ export default defineConfig((info) => {
private: false,
dependencies: {},
devDependencies: {
"@bfsx/core": "link:../../plaoc/core/build/@bfsx/core",
"@bfsx/metadata": "link:../../plaoc/metadata/build/@bfsx/metadata",
"@bfsx/typings": "link:../../plaoc/typings/build/@bfsx/typings",
"@bfsx/core": "link:../../plaoc/core",
"@bfsx/metadata": "link:../../plaoc/metadata",
"@bfsx/typings": "link:../../plaoc/typings",
},
},
tsConfig: {
Expand Down
Loading

0 comments on commit 49b7b8f

Please sign in to comment.