Skip to content

Commit 4ca1fe2

Browse files
committed
Merge branch 'main' into interface-abstraction
2 parents 0968085 + 0e5c7b9 commit 4ca1fe2

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

packages/sane/lib/src/extensions.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:meta/meta.dart';
2+
import 'package:logging/logging.dart';
23
import 'package:sane/src/bindings.g.dart';
34
import 'package:sane/src/exceptions.dart';
45

@@ -12,3 +13,16 @@ extension SaneStatusExtension on SANE_Status {
1213
}
1314
}
1415
}
16+
17+
@internal
18+
extension LoggerExtension on Logger {
19+
void redirect(LogRecord record) {
20+
log(
21+
record.level,
22+
record.message,
23+
record.error,
24+
record.stackTrace,
25+
record.zone,
26+
);
27+
}
28+
}

packages/sane/lib/src/isolate.dart

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import 'dart:async';
22
import 'dart:isolate';
33

4+
import 'package:logging/logging.dart';
45
import 'package:sane/src/exceptions.dart';
6+
import 'package:sane/src/extensions.dart';
57
import 'package:sane/src/isolate_messages/exception.dart';
68
import 'package:sane/src/isolate_messages/interface.dart';
79
import 'package:sane/src/sane.dart';
810

11+
final _logger = Logger('sane.isolate');
12+
913
class SaneIsolate {
1014
SaneIsolate._(
1115
this._isolate,
@@ -36,7 +40,16 @@ class SaneIsolate {
3640
onExit: exitReceivePort.sendPort,
3741
);
3842

39-
final sendPort = await receivePort.first as SendPort;
43+
final sendPortCompleter = Completer<SendPort>();
44+
receivePort.listen((message) {
45+
if (message is _SendPortMessage) {
46+
sendPortCompleter.complete(message.sendPort);
47+
} else if (message is _LogRecordMessage) {
48+
_logger.redirect(message.record);
49+
}
50+
});
51+
52+
final sendPort = await sendPortCompleter.future;
4053
return SaneIsolate._(isolate, sendPort, exitReceivePort);
4154
}
4255

@@ -106,6 +119,18 @@ class _IsolateMessageEnvelope {
106119
final IsolateMessage message;
107120
}
108121

122+
class _SendPortMessage {
123+
_SendPortMessage(this.sendPort);
124+
125+
final SendPort sendPort;
126+
}
127+
128+
class _LogRecordMessage {
129+
_LogRecordMessage(this.record);
130+
131+
final LogRecord record;
132+
}
133+
109134
late Map<String, SaneDevice> _devices;
110135

111136
SaneDevice getDevice(String name) => _devices[name]!;

0 commit comments

Comments
 (0)