Skip to content

Commit 0ed10a1

Browse files
authored
Isolate message self handle (#14)
1 parent 74b9bef commit 0ed10a1

16 files changed

+202
-286
lines changed
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class CancelMessage implements IsolateMessage {
5-
CancelMessage({required this.handle});
6+
CancelMessage({required this.saneHandle});
67

7-
final SaneHandle handle;
8+
final SaneHandle saneHandle;
9+
10+
@override
11+
Future<CancelResponse> handle(Sane sane) async {
12+
await sane.cancel(saneHandle);
13+
return CancelResponse();
14+
}
815
}
916

1017
class CancelResponse implements IsolateResponse {}
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
import 'package:sane/sane.dart';
12
import 'package:sane/src/isolate_messages/interface.dart';
2-
import 'package:sane/src/structures.dart';
33

44
class CloseMessage implements IsolateMessage {
5-
CloseMessage({required this.handle});
5+
CloseMessage({required this.saneHandle});
66

7-
final SaneHandle handle;
7+
final SaneHandle saneHandle;
8+
9+
@override
10+
Future<CloseResponse> handle(Sane sane) async {
11+
await sane.close(saneHandle);
12+
return CloseResponse();
13+
}
814
}
915

1016
class CloseResponse implements IsolateResponse {}

packages/sane/lib/src/isolate_messages/control_button_option.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class ControlButtonOptionMessage implements IsolateMessage {
56
ControlButtonOptionMessage({
6-
required this.handle,
7+
required this.saneHandle,
78
required this.index,
89
});
910

10-
final SaneHandle handle;
11+
final SaneHandle saneHandle;
1112
final int index;
13+
14+
@override
15+
Future<ControlButtonOptionResponse> handle(Sane sane) async {
16+
return ControlButtonOptionResponse(
17+
result: await sane.controlButtonOption(
18+
handle: saneHandle,
19+
index: index,
20+
),
21+
);
22+
}
1223
}
1324

1425
class ControlButtonOptionResponse implements IsolateResponse {
Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,67 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

4-
class ControlOptionMessage<T> implements IsolateMessage {
5-
ControlOptionMessage({
6-
required this.handle,
5+
class ControlValueOptionMessage<T> implements IsolateMessage {
6+
ControlValueOptionMessage({
7+
required this.saneHandle,
78
required this.index,
89
required this.action,
910
this.value,
1011
});
1112

12-
final SaneHandle handle;
13+
final SaneHandle saneHandle;
1314
final int index;
1415
final SaneAction action;
1516
final T? value;
17+
18+
@override
19+
Future<ControlValueOptionResponse> handle(Sane sane) async {
20+
switch (value) {
21+
case final bool value:
22+
return ControlValueOptionResponse<bool>(
23+
result: await sane.controlBoolOption(
24+
handle: saneHandle,
25+
index: index,
26+
action: action,
27+
value: value,
28+
),
29+
);
30+
case final int value:
31+
return ControlValueOptionResponse<int>(
32+
result: await sane.controlIntOption(
33+
handle: saneHandle,
34+
index: index,
35+
action: action,
36+
value: value,
37+
),
38+
);
39+
case final double value:
40+
return ControlValueOptionResponse<double>(
41+
result: await sane.controlFixedOption(
42+
handle: saneHandle,
43+
index: index,
44+
action: action,
45+
value: value,
46+
),
47+
);
48+
case final String value:
49+
return ControlValueOptionResponse<String>(
50+
result: await sane.controlStringOption(
51+
handle: saneHandle,
52+
index: index,
53+
action: action,
54+
value: value,
55+
),
56+
);
57+
default:
58+
throw Exception('Invalid value type.');
59+
}
60+
}
1661
}
1762

18-
class ControlOptionResponse<T> implements IsolateResponse {
19-
ControlOptionResponse({required this.result});
63+
class ControlValueOptionResponse<T> implements IsolateResponse {
64+
ControlValueOptionResponse({required this.result});
2065

2166
final SaneOptionResult<T> result;
2267
}
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23

3-
class ExitMessage implements IsolateMessage {}
4+
class ExitMessage implements IsolateMessage {
5+
@override
6+
Future<ExitResponse> handle(Sane sane) async {
7+
await sane.exit();
8+
return ExitResponse();
9+
}
10+
}
411

512
class ExitResponse implements IsolateResponse {}

packages/sane/lib/src/isolate_messages/get_all_option_descriptors.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class GetAllOptionDescriptorsMessage implements IsolateMessage {
5-
GetAllOptionDescriptorsMessage({required this.handle});
6+
GetAllOptionDescriptorsMessage({required this.saneHandle});
67

7-
final SaneHandle handle;
8+
final SaneHandle saneHandle;
9+
10+
@override
11+
Future<GetAllOptionDescriptorsResponse> handle(Sane sane) async {
12+
return GetAllOptionDescriptorsResponse(
13+
optionDescriptors: await sane.getAllOptionDescriptors(saneHandle),
14+
);
15+
}
816
}
917

1018
class GetAllOptionDescriptorsResponse implements IsolateResponse {

packages/sane/lib/src/isolate_messages/get_devices.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class GetDevicesMessage implements IsolateMessage {
56
GetDevicesMessage({required this.localOnly});
67

78
final bool localOnly;
9+
10+
@override
11+
Future<GetDevicesResponse> handle(Sane sane) async {
12+
return GetDevicesResponse(
13+
devices: await sane.getDevices(localOnly: localOnly),
14+
);
15+
}
816
}
917

1018
class GetDevicesResponse implements IsolateResponse {

packages/sane/lib/src/isolate_messages/get_option_descriptor.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class GetOptionDescriptorMessage implements IsolateMessage {
56
GetOptionDescriptorMessage({
6-
required this.handle,
7+
required this.saneHandle,
78
required this.index,
89
});
910

10-
final SaneHandle handle;
11+
final SaneHandle saneHandle;
1112
final int index;
13+
14+
@override
15+
Future<GetOptionDescriptorResponse> handle(Sane sane) async {
16+
return GetOptionDescriptorResponse(
17+
optionDescriptor: await sane.getOptionDescriptor(saneHandle, index),
18+
);
19+
}
1220
}
1321

1422
class GetOptionDescriptorResponse implements IsolateResponse {

packages/sane/lib/src/isolate_messages/get_parameters.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23
import 'package:sane/src/structures.dart';
34

45
class GetParametersMessage implements IsolateMessage {
5-
GetParametersMessage({required this.handle});
6+
GetParametersMessage({required this.saneHandle});
67

7-
final SaneHandle handle;
8+
final SaneHandle saneHandle;
9+
10+
@override
11+
Future<GetParametersResponse> handle(Sane sane) async {
12+
return GetParametersResponse(
13+
parameters: await sane.getParameters(saneHandle),
14+
);
15+
}
816
}
917

1018
class GetParametersResponse implements IsolateResponse {

packages/sane/lib/src/isolate_messages/init.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import 'package:sane/src/isolate_messages/interface.dart';
2+
import 'package:sane/src/sane.dart';
23

3-
class InitMessage implements IsolateMessage {}
4+
class InitMessage implements IsolateMessage {
5+
@override
6+
Future<InitResponse> handle(Sane sane) async {
7+
return InitResponse(
8+
versionCode: await sane.init(),
9+
);
10+
}
11+
}
412

513
class InitResponse implements IsolateResponse {
614
InitResponse({required this.versionCode});

0 commit comments

Comments
 (0)