Skip to content

Commit

Permalink
Catch and redirect exception in SaneIsolate to main isolate
Browse files Browse the repository at this point in the history
Fixes #17
  • Loading branch information
Jupi007 committed Nov 4, 2024
1 parent 98643a9 commit 132cb0d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
8 changes: 8 additions & 0 deletions packages/sane/lib/src/isolate_messages/exception.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:sane/src/exceptions.dart';
import 'package:sane/src/isolate_messages/interface.dart';

class ExceptionResponse implements IsolateResponse {
ExceptionResponse({required this.exception});

final SaneException exception;
}
16 changes: 13 additions & 3 deletions packages/sane/lib/src/sane_isolate.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:sane/src/isolate_messages/cancel.dart';
import 'package:sane/src/isolate_messages/close.dart';
import 'package:sane/src/isolate_messages/control_button_option.dart';
import 'package:sane/src/isolate_messages/control_option.dart';
import 'package:sane/src/isolate_messages/exception.dart';
import 'package:sane/src/isolate_messages/exit.dart';
import 'package:sane/src/isolate_messages/get_all_option_descriptors.dart';
import 'package:sane/src/isolate_messages/get_devices.dart';
Expand Down Expand Up @@ -57,6 +58,10 @@ class SaneIsolate implements Sane {
final response = await replyPort.first;
replyPort.close();

if (response is ExceptionResponse) {
throw response.exception;
}

return response;
}

Expand Down Expand Up @@ -300,9 +305,14 @@ void _isolateEntryPoint(_IsolateEntryPointArgs args) {
isolateReceivePort.listen((envellope) async {
envellope = envellope as _IsolateMessageEnveloppe;

envellope.replyPort.send(
await envellope.message.handle(sane),
);
late IsolateResponse response;
try {
response = await envellope.message.handle(sane);
} on SaneException catch (e) {
response = ExceptionResponse(exception: e);
}

envellope.replyPort.send(response);
});
}

Expand Down

0 comments on commit 132cb0d

Please sign in to comment.