From 75ba230f33b0fa388eea9626c6034373ebb853b1 Mon Sep 17 00:00:00 2001 From: Craftplacer <22963120+craftplacer@users.noreply.github.com> Date: Mon, 4 Nov 2024 00:38:57 +0100 Subject: [PATCH] Extract isolate messages into separate files --- .../sane/lib/src/isolate_messages/cancel.dart | 10 + .../sane/lib/src/isolate_messages/close.dart | 10 + .../control_button_option.dart | 18 + .../src/isolate_messages/control_option.dart | 22 + .../sane/lib/src/isolate_messages/exit.dart | 5 + .../get_all_option_descriptors.dart | 14 + .../lib/src/isolate_messages/get_devices.dart | 14 + .../get_option_descriptor.dart | 18 + .../src/isolate_messages/get_parameters.dart | 14 + .../sane/lib/src/isolate_messages/init.dart | 9 + .../lib/src/isolate_messages/interface.dart | 3 + .../sane/lib/src/isolate_messages/open.dart | 14 + .../sane/lib/src/isolate_messages/read.dart | 22 + .../lib/src/isolate_messages/set_io_mode.dart | 14 + .../sane/lib/src/isolate_messages/start.dart | 10 + packages/sane/lib/src/sane_isolate.dart | 399 +++++------------- 16 files changed, 313 insertions(+), 283 deletions(-) create mode 100644 packages/sane/lib/src/isolate_messages/cancel.dart create mode 100644 packages/sane/lib/src/isolate_messages/close.dart create mode 100644 packages/sane/lib/src/isolate_messages/control_button_option.dart create mode 100644 packages/sane/lib/src/isolate_messages/control_option.dart create mode 100644 packages/sane/lib/src/isolate_messages/exit.dart create mode 100644 packages/sane/lib/src/isolate_messages/get_all_option_descriptors.dart create mode 100644 packages/sane/lib/src/isolate_messages/get_devices.dart create mode 100644 packages/sane/lib/src/isolate_messages/get_option_descriptor.dart create mode 100644 packages/sane/lib/src/isolate_messages/get_parameters.dart create mode 100644 packages/sane/lib/src/isolate_messages/init.dart create mode 100644 packages/sane/lib/src/isolate_messages/interface.dart create mode 100644 packages/sane/lib/src/isolate_messages/open.dart create mode 100644 packages/sane/lib/src/isolate_messages/read.dart create mode 100644 packages/sane/lib/src/isolate_messages/set_io_mode.dart create mode 100644 packages/sane/lib/src/isolate_messages/start.dart diff --git a/packages/sane/lib/src/isolate_messages/cancel.dart b/packages/sane/lib/src/isolate_messages/cancel.dart new file mode 100644 index 0000000..1c75179 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/cancel.dart @@ -0,0 +1,10 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class CancelMessage implements IsolateMessage { + CancelMessage({required this.handle}); + + final SaneHandle handle; +} + +class CancelResponse implements IsolateResponse {} diff --git a/packages/sane/lib/src/isolate_messages/close.dart b/packages/sane/lib/src/isolate_messages/close.dart new file mode 100644 index 0000000..609d37b --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/close.dart @@ -0,0 +1,10 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class CloseMessage implements IsolateMessage { + CloseMessage({required this.handle}); + + final SaneHandle handle; +} + +class CloseResponse implements IsolateResponse {} diff --git a/packages/sane/lib/src/isolate_messages/control_button_option.dart b/packages/sane/lib/src/isolate_messages/control_button_option.dart new file mode 100644 index 0000000..b5ba505 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/control_button_option.dart @@ -0,0 +1,18 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class ControlButtonOptionMessage implements IsolateMessage { + ControlButtonOptionMessage({ + required this.handle, + required this.index, + }); + + final SaneHandle handle; + final int index; +} + +class ControlButtonOptionResponse implements IsolateResponse { + ControlButtonOptionResponse({required this.result}); + + final SaneOptionResult result; +} diff --git a/packages/sane/lib/src/isolate_messages/control_option.dart b/packages/sane/lib/src/isolate_messages/control_option.dart new file mode 100644 index 0000000..ef8c366 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/control_option.dart @@ -0,0 +1,22 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class ControlOptionMessage implements IsolateMessage { + ControlOptionMessage({ + required this.handle, + required this.index, + required this.action, + this.value, + }); + + final SaneHandle handle; + final int index; + final SaneAction action; + final T? value; +} + +class ControlOptionResponse implements IsolateResponse { + ControlOptionResponse({required this.result}); + + final SaneOptionResult result; +} diff --git a/packages/sane/lib/src/isolate_messages/exit.dart b/packages/sane/lib/src/isolate_messages/exit.dart new file mode 100644 index 0000000..0e0b9c3 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/exit.dart @@ -0,0 +1,5 @@ +import 'package:sane/src/isolate_messages/interface.dart'; + +class ExitMessage implements IsolateMessage {} + +class ExitResponse implements IsolateResponse {} diff --git a/packages/sane/lib/src/isolate_messages/get_all_option_descriptors.dart b/packages/sane/lib/src/isolate_messages/get_all_option_descriptors.dart new file mode 100644 index 0000000..51dca6a --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/get_all_option_descriptors.dart @@ -0,0 +1,14 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class GetAllOptionDescriptorsMessage implements IsolateMessage { + GetAllOptionDescriptorsMessage({required this.handle}); + + final SaneHandle handle; +} + +class GetAllOptionDescriptorsResponse implements IsolateResponse { + GetAllOptionDescriptorsResponse({required this.optionDescriptors}); + + final List optionDescriptors; +} diff --git a/packages/sane/lib/src/isolate_messages/get_devices.dart b/packages/sane/lib/src/isolate_messages/get_devices.dart new file mode 100644 index 0000000..d7e764c --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/get_devices.dart @@ -0,0 +1,14 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class GetDevicesMessage implements IsolateMessage { + GetDevicesMessage({required this.localOnly}); + + final bool localOnly; +} + +class GetDevicesResponse implements IsolateResponse { + GetDevicesResponse({required this.devices}); + + final List devices; +} diff --git a/packages/sane/lib/src/isolate_messages/get_option_descriptor.dart b/packages/sane/lib/src/isolate_messages/get_option_descriptor.dart new file mode 100644 index 0000000..7dca91b --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/get_option_descriptor.dart @@ -0,0 +1,18 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class GetOptionDescriptorMessage implements IsolateMessage { + GetOptionDescriptorMessage({ + required this.handle, + required this.index, + }); + + final SaneHandle handle; + final int index; +} + +class GetOptionDescriptorResponse implements IsolateResponse { + GetOptionDescriptorResponse({required this.optionDescriptor}); + + final SaneOptionDescriptor optionDescriptor; +} diff --git a/packages/sane/lib/src/isolate_messages/get_parameters.dart b/packages/sane/lib/src/isolate_messages/get_parameters.dart new file mode 100644 index 0000000..8b2e3f7 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/get_parameters.dart @@ -0,0 +1,14 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class GetParametersMessage implements IsolateMessage { + GetParametersMessage({required this.handle}); + + final SaneHandle handle; +} + +class GetParametersResponse implements IsolateResponse { + GetParametersResponse({required this.parameters}); + + final SaneParameters parameters; +} diff --git a/packages/sane/lib/src/isolate_messages/init.dart b/packages/sane/lib/src/isolate_messages/init.dart new file mode 100644 index 0000000..f1c6a6c --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/init.dart @@ -0,0 +1,9 @@ +import 'package:sane/src/isolate_messages/interface.dart'; + +class InitMessage implements IsolateMessage {} + +class InitResponse implements IsolateResponse { + InitResponse({required this.versionCode}); + + final int versionCode; +} diff --git a/packages/sane/lib/src/isolate_messages/interface.dart b/packages/sane/lib/src/isolate_messages/interface.dart new file mode 100644 index 0000000..e511d98 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/interface.dart @@ -0,0 +1,3 @@ +interface class IsolateMessage {} + +interface class IsolateResponse {} diff --git a/packages/sane/lib/src/isolate_messages/open.dart b/packages/sane/lib/src/isolate_messages/open.dart new file mode 100644 index 0000000..bd7f9b8 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/open.dart @@ -0,0 +1,14 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class OpenMessage implements IsolateMessage { + OpenMessage({required this.deviceName}); + + final String deviceName; +} + +class OpenResponse implements IsolateResponse { + OpenResponse({required this.handle}); + + final SaneHandle handle; +} diff --git a/packages/sane/lib/src/isolate_messages/read.dart b/packages/sane/lib/src/isolate_messages/read.dart new file mode 100644 index 0000000..babe139 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/read.dart @@ -0,0 +1,22 @@ +import 'dart:typed_data'; + +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class ReadMessage implements IsolateMessage { + ReadMessage({ + required this.handle, + required this.bufferSize, + }); + + final SaneHandle handle; + final int bufferSize; +} + +class ReadResponse implements IsolateResponse { + ReadResponse({ + required this.bytes, + }); + + final Uint8List bytes; +} diff --git a/packages/sane/lib/src/isolate_messages/set_io_mode.dart b/packages/sane/lib/src/isolate_messages/set_io_mode.dart new file mode 100644 index 0000000..44ee834 --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/set_io_mode.dart @@ -0,0 +1,14 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class SetIOModeMessage implements IsolateMessage { + SetIOModeMessage({ + required this.handle, + required this.ioMode, + }); + + final SaneHandle handle; + final SaneIOMode ioMode; +} + +class SetIOModeResponse implements IsolateResponse {} diff --git a/packages/sane/lib/src/isolate_messages/start.dart b/packages/sane/lib/src/isolate_messages/start.dart new file mode 100644 index 0000000..7eb83ed --- /dev/null +++ b/packages/sane/lib/src/isolate_messages/start.dart @@ -0,0 +1,10 @@ +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/structures.dart'; + +class StartMessage implements IsolateMessage { + StartMessage({required this.handle}); + + final SaneHandle handle; +} + +class StartResponse implements IsolateResponse {} diff --git a/packages/sane/lib/src/sane_isolate.dart b/packages/sane/lib/src/sane_isolate.dart index 74d148c..7521ff5 100644 --- a/packages/sane/lib/src/sane_isolate.dart +++ b/packages/sane/lib/src/sane_isolate.dart @@ -2,6 +2,21 @@ import 'dart:isolate'; import 'dart:typed_data'; import 'package:sane/sane.dart'; +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/exit.dart'; +import 'package:sane/src/isolate_messages/get_all_option_descriptors.dart'; +import 'package:sane/src/isolate_messages/get_devices.dart'; +import 'package:sane/src/isolate_messages/get_option_descriptor.dart'; +import 'package:sane/src/isolate_messages/get_parameters.dart'; +import 'package:sane/src/isolate_messages/init.dart'; +import 'package:sane/src/isolate_messages/interface.dart'; +import 'package:sane/src/isolate_messages/open.dart'; +import 'package:sane/src/isolate_messages/read.dart'; +import 'package:sane/src/isolate_messages/set_io_mode.dart'; +import 'package:sane/src/isolate_messages/start.dart'; class SaneIsolate implements Sane { SaneIsolate({ @@ -29,7 +44,7 @@ class SaneIsolate implements Sane { _isolate.kill(priority: Isolate.immediate); } - Future _sendMessage(_SaneIsolateMessage message) async { + Future _sendMessage(IsolateMessage message) async { final replyPort = ReceivePort(); _sendPort.send( @@ -49,14 +64,13 @@ class SaneIsolate implements Sane { Future init({ AuthCallback? authCallback, }) async { - final response = - await _sendMessage(_SaneInitMessage()) as _SaneInitResponse; + final response = await _sendMessage(InitMessage()) as InitResponse; return response.versionCode; } @override Future exit() async { - await _sendMessage(_SaneExitMessage()); + await _sendMessage(ExitMessage()); } @override @@ -64,10 +78,10 @@ class SaneIsolate implements Sane { required bool localOnly, }) async { final response = await _sendMessage( - _SaneGetDevicesMessage( + GetDevicesMessage( localOnly: localOnly, ), - ) as _SaneGetDevicesResponse; + ) as GetDevicesResponse; return response.devices; } @@ -75,10 +89,10 @@ class SaneIsolate implements Sane { @override Future open(String deviceName) async { final response = await _sendMessage( - _SaneOpenMessage( + OpenMessage( deviceName: deviceName, ), - ) as _SaneOpenResponse; + ) as OpenResponse; return response.handle; } @@ -91,7 +105,7 @@ class SaneIsolate implements Sane { @override Future close(SaneHandle handle) async { await _sendMessage( - _SaneCloseMessage( + CloseMessage( handle: handle, ), ); @@ -103,11 +117,11 @@ class SaneIsolate implements Sane { int index, ) async { final response = await _sendMessage( - _SaneGetOptionDescriptorMessage( + GetOptionDescriptorMessage( handle: handle, index: index, ), - ) as _SaneGetOptionDescriptorResponse; + ) as GetOptionDescriptorResponse; return response.optionDescriptor; } @@ -117,10 +131,10 @@ class SaneIsolate implements Sane { SaneHandle handle, ) async { final response = await _sendMessage( - _SaneGetAllOptionDescriptorsMessage( + GetAllOptionDescriptorsMessage( handle: handle, ), - ) as _SaneGetAllOptionDescriptorsResponse; + ) as GetAllOptionDescriptorsResponse; return response.optionDescriptors; } @@ -133,13 +147,13 @@ class SaneIsolate implements Sane { bool? value, }) async { final response = await _sendMessage( - _SaneControlOptionMessage( + ControlOptionMessage( handle: handle, index: index, action: action, value: value, ), - ) as _SaneControlOptionResponse; + ) as ControlOptionResponse; return response.result; } @@ -152,13 +166,13 @@ class SaneIsolate implements Sane { int? value, }) async { final response = await _sendMessage( - _SaneControlOptionMessage( + ControlOptionMessage( handle: handle, index: index, action: action, value: value, ), - ) as _SaneControlOptionResponse; + ) as ControlOptionResponse; return response.result; } @@ -171,13 +185,13 @@ class SaneIsolate implements Sane { double? value, }) async { final response = await _sendMessage( - _SaneControlOptionMessage( + ControlOptionMessage( handle: handle, index: index, action: action, value: value, ), - ) as _SaneControlOptionResponse; + ) as ControlOptionResponse; return response.result; } @@ -190,13 +204,13 @@ class SaneIsolate implements Sane { String? value, }) async { final response = await _sendMessage( - _SaneControlOptionMessage( + ControlOptionMessage( handle: handle, index: index, action: action, value: value, ), - ) as _SaneControlOptionResponse; + ) as ControlOptionResponse; return response.result; } @@ -207,11 +221,11 @@ class SaneIsolate implements Sane { required int index, }) async { final response = await _sendMessage( - _SaneControlButtonOptionMessage( + ControlButtonOptionMessage( handle: handle, index: index, ), - ) as _SaneControlButtonOptionResponse; + ) as ControlButtonOptionResponse; return response.result; } @@ -219,10 +233,10 @@ class SaneIsolate implements Sane { @override Future getParameters(SaneHandle handle) async { final response = await _sendMessage( - _SaneGetParametersMessage( + GetParametersMessage( handle: handle, ), - ) as _SaneGetParametersResponse; + ) as GetParametersResponse; return response.parameters; } @@ -230,7 +244,7 @@ class SaneIsolate implements Sane { @override Future start(SaneHandle handle) async { await _sendMessage( - _SaneStartMessage( + StartMessage( handle: handle, ), ); @@ -239,11 +253,11 @@ class SaneIsolate implements Sane { @override Future read(SaneHandle handle, int bufferSize) async { final response = await _sendMessage( - _SaneReadMessage( + ReadMessage( handle: handle, bufferSize: bufferSize, ), - ) as _SaneReadResponse; + ) as ReadResponse; return response.bytes; } @@ -251,7 +265,7 @@ class SaneIsolate implements Sane { @override Future cancel(SaneHandle handle) async { await _sendMessage( - _SaneCancelMessage( + CancelMessage( handle: handle, ), ); @@ -263,7 +277,7 @@ class SaneIsolate implements Sane { SaneIOMode ioMode, ) async { await _sendMessage( - _SaneSetIOModeMessage(handle: handle, ioMode: ioMode), + SetIOModeMessage(handle: handle, ioMode: ioMode), ); } } @@ -273,6 +287,7 @@ class _IsolateEntryPointArgs { required this.mainSendPort, required this.sane, }); + final SendPort mainSendPort; final Sane sane; } @@ -281,7 +296,7 @@ void _isolateEntryPoint(_IsolateEntryPointArgs args) { final isolateReceivePort = ReceivePort(); args.mainSendPort.send(isolateReceivePort.sendPort); - final messageHandler = _SaneMessageHandler(sane: args.sane); + final messageHandler = MessageHandler(sane: args.sane); isolateReceivePort.listen((envellope) async { envellope = envellope as _IsolateMessageEnveloppe; @@ -291,10 +306,6 @@ void _isolateEntryPoint(_IsolateEntryPointArgs args) { }); } -interface class _SaneIsolateMessage {} - -interface class _SaneIsolateResponse {} - class _IsolateMessageEnveloppe { _IsolateMessageEnveloppe({ required this.replyPort, @@ -302,67 +313,66 @@ class _IsolateMessageEnveloppe { }); final SendPort replyPort; - final _SaneIsolateMessage message; + final IsolateMessage message; } -class _SaneMessageHandler { - _SaneMessageHandler({required Sane sane}) : _sane = sane; +class MessageHandler { + MessageHandler({required Sane sane}) : _sane = sane; final Sane _sane; - Future<_SaneIsolateResponse> handleMessage( - _SaneIsolateMessage message, + Future handleMessage(IsolateMessage message, ) async { switch (message) { - case _SaneInitMessage _: + case InitMessage _: return await _handleSaneInitMessage(); - case _SaneExitMessage _: + case ExitMessage _: return await _handleSaneExitMessage(); - case final _SaneGetDevicesMessage message: + case final GetDevicesMessage message: return await _handleSaneGetDevicesMessages(message); - case final _SaneOpenMessage message: + case final OpenMessage message: return await _handleSaneOpenMessage(message); - case final _SaneCloseMessage message: + case final CloseMessage message: return await _handleSaneCloseMessage(message); - case final _SaneGetOptionDescriptorMessage message: + case final GetOptionDescriptorMessage message: return await _handleSaneGetOptionDescriptorMessage(message); - case final _SaneGetAllOptionDescriptorsMessage message: + case final GetAllOptionDescriptorsMessage message: return await _handleSaneGetAllOptionDescriptorsMessage(message); - case final _SaneControlOptionMessage message: + case final ControlOptionMessage message: return await _handleSaneControlBoolOptionMessage(message); - case final _SaneControlOptionMessage message: + case final ControlOptionMessage message: return await _handleSaneControlIntOptionMessage(message); - case final _SaneControlOptionMessage message: + case final ControlOptionMessage message: return await _handleSaneControlFixedOptionMessage(message); - case final _SaneControlOptionMessage message: + case final ControlOptionMessage message: return await _handleSaneControlStringOptionMessage(message); - case final _SaneControlButtonOptionMessage message: + case final ControlButtonOptionMessage message: return await _handleSaneControlButtonOptionMessage(message); - case final _SaneGetParametersMessage message: + case final GetParametersMessage message: return await _handleSaneGetParametersMessage(message); - case final _SaneStartMessage message: + case final StartMessage message: return await _handleSaneStartMessage(message); - case final _SaneReadMessage message: + case final ReadMessage message: return await _handleSaneReadMessage(message); - case final _SaneCancelMessage message: + case final CancelMessage message: return await _handleSaneCancelMessage(message); - case final _SaneSetIOModeMessage message: + case final SetIOModeMessage message: return await _handleSaneSetIOModeMessage(message); default: @@ -370,49 +380,48 @@ class _SaneMessageHandler { } } - Future<_SaneInitResponse> _handleSaneInitMessage() async { - return _SaneInitResponse( + Future _handleSaneInitMessage() async { + return InitResponse( versionCode: await _sane.init(), ); } - Future<_SaneExitResponse> _handleSaneExitMessage() async { + Future _handleSaneExitMessage() async { await _sane.exit(); - return _SaneExitResponse(); + return ExitResponse(); } - Future<_SaneGetDevicesResponse> _handleSaneGetDevicesMessages( - _SaneGetDevicesMessage message, + Future _handleSaneGetDevicesMessages( + GetDevicesMessage message, ) async { - return _SaneGetDevicesResponse( + return GetDevicesResponse( devices: await _sane.getDevices( localOnly: message.localOnly, ), ); } - Future<_SaneOpenResponse> _handleSaneOpenMessage( - _SaneOpenMessage message, + Future _handleSaneOpenMessage( + OpenMessage message, ) async { - return _SaneOpenResponse( + return OpenResponse( handle: await _sane.open( message.deviceName, ), ); } - Future<_SaneCloseResponse> _handleSaneCloseMessage( - _SaneCloseMessage message, + Future _handleSaneCloseMessage( + CloseMessage message, ) async { await _sane.close(message.handle); - return _SaneCloseResponse(); + return CloseResponse(); } - Future<_SaneGetOptionDescriptorResponse> - _handleSaneGetOptionDescriptorMessage( - _SaneGetOptionDescriptorMessage message, + Future _handleSaneGetOptionDescriptorMessage( + GetOptionDescriptorMessage message, ) async { - return _SaneGetOptionDescriptorResponse( + return GetOptionDescriptorResponse( optionDescriptor: await _sane.getOptionDescriptor( message.handle, message.index, @@ -420,21 +429,21 @@ class _SaneMessageHandler { ); } - Future<_SaneGetAllOptionDescriptorsResponse> + Future _handleSaneGetAllOptionDescriptorsMessage( - _SaneGetAllOptionDescriptorsMessage message, + GetAllOptionDescriptorsMessage message, ) async { - return _SaneGetAllOptionDescriptorsResponse( + return GetAllOptionDescriptorsResponse( optionDescriptors: await _sane.getAllOptionDescriptors( message.handle, ), ); } - Future<_SaneControlOptionResponse> _handleSaneControlBoolOptionMessage( - _SaneControlOptionMessage message, + Future> _handleSaneControlBoolOptionMessage( + ControlOptionMessage message, ) async { - return _SaneControlOptionResponse( + return ControlOptionResponse( result: await _sane.controlBoolOption( handle: message.handle, index: message.index, @@ -444,10 +453,10 @@ class _SaneMessageHandler { ); } - Future<_SaneControlOptionResponse> _handleSaneControlIntOptionMessage( - _SaneControlOptionMessage message, + Future> _handleSaneControlIntOptionMessage( + ControlOptionMessage message, ) async { - return _SaneControlOptionResponse( + return ControlOptionResponse( result: await _sane.controlIntOption( handle: message.handle, index: message.index, @@ -457,11 +466,10 @@ class _SaneMessageHandler { ); } - Future<_SaneControlOptionResponse> - _handleSaneControlFixedOptionMessage( - _SaneControlOptionMessage message, + Future> _handleSaneControlFixedOptionMessage( + ControlOptionMessage message, ) async { - return _SaneControlOptionResponse( + return ControlOptionResponse( result: await _sane.controlFixedOption( handle: message.handle, index: message.index, @@ -471,11 +479,10 @@ class _SaneMessageHandler { ); } - Future<_SaneControlOptionResponse> - _handleSaneControlStringOptionMessage( - _SaneControlOptionMessage message, + Future> _handleSaneControlStringOptionMessage( + ControlOptionMessage message, ) async { - return _SaneControlOptionResponse( + return ControlOptionResponse( result: await _sane.controlStringOption( handle: message.handle, index: message.index, @@ -485,11 +492,10 @@ class _SaneMessageHandler { ); } - Future<_SaneControlButtonOptionResponse> - _handleSaneControlButtonOptionMessage( - _SaneControlButtonOptionMessage message, + Future _handleSaneControlButtonOptionMessage( + ControlButtonOptionMessage message, ) async { - return _SaneControlButtonOptionResponse( + return ControlButtonOptionResponse( result: await _sane.controlButtonOption( handle: message.handle, index: message.index, @@ -497,27 +503,27 @@ class _SaneMessageHandler { ); } - Future<_SaneGetParametersResponse> _handleSaneGetParametersMessage( - _SaneGetParametersMessage message, + Future _handleSaneGetParametersMessage( + GetParametersMessage message, ) async { - return _SaneGetParametersResponse( + return GetParametersResponse( parameters: await _sane.getParameters( message.handle, ), ); } - Future<_SaneStartResponse> _handleSaneStartMessage( - _SaneStartMessage message, + Future _handleSaneStartMessage( + StartMessage message, ) async { await _sane.start(message.handle); - return _SaneStartResponse(); + return StartResponse(); } - Future<_SaneReadResponse> _handleSaneReadMessage( - _SaneReadMessage message, + Future _handleSaneReadMessage( + ReadMessage message, ) async { - return _SaneReadResponse( + return ReadResponse( bytes: await _sane.read( message.handle, message.bufferSize, @@ -525,193 +531,20 @@ class _SaneMessageHandler { ); } - Future<_SaneCancelResponse> _handleSaneCancelMessage( - _SaneCancelMessage message, + Future _handleSaneCancelMessage( + CancelMessage message, ) async { await _sane.cancel(message.handle); - return _SaneCancelResponse(); + return CancelResponse(); } - Future<_SaneSetIOModeResponse> _handleSaneSetIOModeMessage( - _SaneSetIOModeMessage message, + Future _handleSaneSetIOModeMessage( + SetIOModeMessage message, ) async { await _sane.setIOMode( message.handle, message.ioMode, ); - return _SaneSetIOModeResponse(); + return SetIOModeResponse(); } } - -// INIT - -class _SaneInitMessage implements _SaneIsolateMessage {} - -class _SaneInitResponse implements _SaneIsolateResponse { - _SaneInitResponse({required this.versionCode}); - final int versionCode; -} - -// EXIT - -class _SaneExitMessage implements _SaneIsolateMessage {} - -class _SaneExitResponse implements _SaneIsolateResponse {} - -// GET DEVICES - -class _SaneGetDevicesMessage implements _SaneIsolateMessage { - _SaneGetDevicesMessage({required this.localOnly}); - final bool localOnly; -} - -class _SaneGetDevicesResponse implements _SaneIsolateResponse { - _SaneGetDevicesResponse({required this.devices}); - final List devices; -} - -// OPEN - -class _SaneOpenMessage implements _SaneIsolateMessage { - _SaneOpenMessage({required this.deviceName}); - final String deviceName; -} - -class _SaneOpenResponse implements _SaneIsolateResponse { - _SaneOpenResponse({required this.handle}); - final SaneHandle handle; -} - -// CLOSE - -class _SaneCloseMessage implements _SaneIsolateMessage { - _SaneCloseMessage({required this.handle}); - final SaneHandle handle; -} - -class _SaneCloseResponse implements _SaneIsolateResponse {} - -// GET OPTION DESCRIPTOR - -class _SaneGetOptionDescriptorMessage implements _SaneIsolateMessage { - _SaneGetOptionDescriptorMessage({ - required this.handle, - required this.index, - }); - final SaneHandle handle; - final int index; -} - -class _SaneGetOptionDescriptorResponse implements _SaneIsolateResponse { - _SaneGetOptionDescriptorResponse({required this.optionDescriptor}); - final SaneOptionDescriptor optionDescriptor; -} - -// GET ALL OPTION DESCRIPTOR - -class _SaneGetAllOptionDescriptorsMessage implements _SaneIsolateMessage { - _SaneGetAllOptionDescriptorsMessage({required this.handle}); - final SaneHandle handle; -} - -class _SaneGetAllOptionDescriptorsResponse implements _SaneIsolateResponse { - _SaneGetAllOptionDescriptorsResponse({required this.optionDescriptors}); - final List optionDescriptors; -} - -// CONTROL OPTION - -class _SaneControlOptionMessage implements _SaneIsolateMessage { - _SaneControlOptionMessage({ - required this.handle, - required this.index, - required this.action, - this.value, - }); - final SaneHandle handle; - final int index; - final SaneAction action; - final T? value; -} - -class _SaneControlOptionResponse implements _SaneIsolateResponse { - _SaneControlOptionResponse({required this.result}); - final SaneOptionResult result; -} - -// CONTROL BUTTON OPTION - -class _SaneControlButtonOptionMessage implements _SaneIsolateMessage { - _SaneControlButtonOptionMessage({ - required this.handle, - required this.index, - }); - final SaneHandle handle; - final int index; -} - -class _SaneControlButtonOptionResponse implements _SaneIsolateResponse { - _SaneControlButtonOptionResponse({required this.result}); - final SaneOptionResult result; -} - -// GET PARAMETERS - -class _SaneGetParametersMessage implements _SaneIsolateMessage { - _SaneGetParametersMessage({required this.handle}); - final SaneHandle handle; -} - -class _SaneGetParametersResponse implements _SaneIsolateResponse { - _SaneGetParametersResponse({required this.parameters}); - final SaneParameters parameters; -} - -// START - -class _SaneStartMessage implements _SaneIsolateMessage { - _SaneStartMessage({required this.handle}); - final SaneHandle handle; -} - -class _SaneStartResponse implements _SaneIsolateResponse {} - -// READ - -class _SaneReadMessage implements _SaneIsolateMessage { - _SaneReadMessage({ - required this.handle, - required this.bufferSize, - }); - final SaneHandle handle; - final int bufferSize; -} - -class _SaneReadResponse implements _SaneIsolateResponse { - _SaneReadResponse({ - required this.bytes, - }); - final Uint8List bytes; -} - -// CANCEL - -class _SaneCancelMessage implements _SaneIsolateMessage { - _SaneCancelMessage({required this.handle}); - final SaneHandle handle; -} - -class _SaneCancelResponse implements _SaneIsolateResponse {} - -// SET IO MODE - -class _SaneSetIOModeMessage implements _SaneIsolateMessage { - _SaneSetIOModeMessage({ - required this.handle, - required this.ioMode, - }); - final SaneHandle handle; - final SaneIOMode ioMode; -} - -class _SaneSetIOModeResponse implements _SaneIsolateResponse {}