add initialize in isolate

This commit is contained in:
leedongmyung 2025-01-05 09:57:24 +09:00
parent 00289ddbde
commit 8e0f79e28e
2 changed files with 18 additions and 5 deletions

View file

@ -3,15 +3,18 @@ import 'package:dart_framework/subtitle/parser_smi.dart';
import 'package:dart_framework/subtitle/parser_srt.dart'; import 'package:dart_framework/subtitle/parser_srt.dart';
import 'package:dart_framework/utils/os_startup.dart'; import 'package:dart_framework/utils/os_startup.dart';
import 'package:dart_framework/utils/system_util.dart'; import 'package:dart_framework/utils/system_util.dart';
import 'package:path/path.dart' as path;
import 'package:dart_framework/core/application.dart'; import 'package:dart_framework/core/application.dart';
import 'package:dart_framework/charset.dart'; import 'package:dart_framework/charset.dart';
import 'package:dart_framework/platform/isolate_manager.dart' as isolate;
import 'package:path/path.dart' as path;
void main() async { void main() async {
Application('dartframework', 'com.toki-labs.dartframework', () async { Application('dartframework', 'com.toki-labs.dartframework', () async {
print(await OSStartup.unregistStartup(appIdendifier)); print(await OSStartup.unregistStartup(appIdendifier));
isolate.test();
// print(await OSStartup.isRegistedStartup(appIdendifier)); // print(await OSStartup.isRegistedStartup(appIdendifier));
// print(await OSStartup.registStartup( // print(await OSStartup.registStartup(

View file

@ -4,6 +4,7 @@ import 'dart:async';
import 'package:dart_framework/data/isolate_data.dart'; import 'package:dart_framework/data/isolate_data.dart';
import 'package:dart_framework/platform/process.dart'; import 'package:dart_framework/platform/process.dart';
import 'package:dart_framework/utils/system_util.dart' as system;
/// ********************** Test ************************* /// /// ********************** Test ************************* ///
void test() { void test() {
@ -34,6 +35,8 @@ void test() {
class IsolateTemplate extends IsolateBase { class IsolateTemplate extends IsolateBase {
@override @override
void onReady(Object? initData) async { void onReady(Object? initData) async {
print(
'[IsolateTemplate] appName: ${system.appName}, appID: ${system.appIdendifier}');
print('[IsolateTemplate] onReady - initData: $initData'); print('[IsolateTemplate] onReady - initData: $initData');
addEventListener('test1', onTest1Handler, executeOnce: true); addEventListener('test1', onTest1Handler, executeOnce: true);
addEventListener('test2', onTest2Handler); addEventListener('test2', onTest2Handler);
@ -66,7 +69,10 @@ class _IsolateConstructData {
late int id; late int id;
late SendPort mainIsoSender; late SendPort mainIsoSender;
late Object? initData; late Object? initData;
_IsolateConstructData(this.id, this.mainIsoSender, this.initData); late String appName;
late String appID;
_IsolateConstructData(
this.id, this.mainIsoSender, this.appName, this.appID, this.initData);
} }
class IsolateHandler { class IsolateHandler {
@ -180,8 +186,10 @@ class IsolateManager {
inst.isoListener = message as SendPort; inst.isoListener = message as SendPort;
isolateEventListener(IsolateEvent.ready, id); isolateEventListener(IsolateEvent.ready, id);
}); });
await Isolate.spawn(inst.initialize, await Isolate.spawn(
_IsolateConstructData(id, isoListener.sendPort, initData)); inst.initialize,
_IsolateConstructData(id, isoListener.sendPort, system.appName,
system.appIdendifier, initData));
await for (IsoMessege message in isoListener) { await for (IsoMessege message in isoListener) {
if (message.type == _IsolateInnerEvent.exit) { if (message.type == _IsolateInnerEvent.exit) {
isolateEventListener(IsolateEvent.exit, null); isolateEventListener(IsolateEvent.exit, null);
@ -254,6 +262,8 @@ class IsolateBase {
id = initData.id; id = initData.id;
_mainIsoListener = ReceivePort(); _mainIsoListener = ReceivePort();
_mainIsoSender = initData.mainIsoSender; _mainIsoSender = initData.mainIsoSender;
system.initialize(initData.appName, initData.appID);
send(IsoMessege(_IsolateInnerEvent.ready, data: _mainIsoListener.sendPort)); send(IsoMessege(_IsolateInnerEvent.ready, data: _mainIsoListener.sendPort));
onReady(initData.initData); onReady(initData.initData);
await for (IsoMessege message in _mainIsoListener) { await for (IsoMessege message in _mainIsoListener) {