From 24ad684efa82ea86645154971899fc5293e0944e Mon Sep 17 00:00:00 2001 From: tom8zds <2407164659@qq.com> Date: Sun, 7 Jul 2024 12:25:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8feature:=20reformat=20mission=20stream?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/device_info_utils.dart | 14 +- lib/core/listeners/mission_listener.dart | 15 + .../listeners/pending_mission_listener.dart | 15 - lib/core/providers/core_provider.g.dart | 2 +- lib/core/providers/mission_provider.dart | 15 +- lib/core/providers/mission_provider.g.dart | 21 +- lib/core/rust/actor/core.dart | 2 +- lib/core/rust/actor/mission.dart | 73 ++ ...sfer.freezed.dart => mission.freezed.dart} | 373 +++++----- lib/core/rust/actor/mission/pending.dart | 30 - lib/core/rust/actor/mission/transfer.dart | 66 -- lib/core/rust/actor/model.dart | 38 +- lib/core/rust/api/model.dart | 2 +- lib/core/rust/bridge.dart | 20 +- lib/core/rust/discovery/model.dart | 67 -- lib/core/rust/frb_generated.dart | 673 ++++++----------- lib/core/rust/frb_generated.io.dart | 193 ++--- lib/core/rust/logger.dart | 2 +- lib/core/store/config_store.dart | 26 +- lib/i18n/strings.g.dart | 2 +- lib/main.dart | 7 + lib/view/pages/frame_page.dart | 64 +- lib/view/pages/home_page.dart | 3 +- lib/view/pages/mission_page.dart | 189 +++++ lib/view/pages/pending_page.dart | 108 --- pubspec.lock | 56 +- pubspec.yaml | 4 +- rust/Cargo.toml | 2 +- rust/src/actor/core.rs | 1 - rust/src/actor/mission.rs | 34 + rust/src/actor/mission/mission.rs.template.rs | 75 -- rust/src/actor/mission/notify.rs | 96 +++ rust/src/actor/mission/pending.rs | 80 +- rust/src/actor/mission/transfer.rs | 132 +--- rust/src/bridge.rs | 38 +- rust/src/frb_generated.rs | 703 +++++++----------- rust/src/logger.rs | 7 +- .../flutter/generated_plugin_registrant.cc | 3 - windows/flutter/generated_plugins.cmake | 1 - 39 files changed, 1311 insertions(+), 1941 deletions(-) create mode 100644 lib/core/listeners/mission_listener.dart delete mode 100644 lib/core/listeners/pending_mission_listener.dart create mode 100644 lib/core/rust/actor/mission.dart rename lib/core/rust/actor/{mission/transfer.freezed.dart => mission.freezed.dart} (50%) delete mode 100644 lib/core/rust/actor/mission/pending.dart delete mode 100644 lib/core/rust/actor/mission/transfer.dart delete mode 100644 lib/core/rust/discovery/model.dart create mode 100644 lib/view/pages/mission_page.dart delete mode 100644 lib/view/pages/pending_page.dart delete mode 100644 rust/src/actor/mission/mission.rs.template.rs create mode 100644 rust/src/actor/mission/notify.rs diff --git a/lib/common/device_info_utils.dart b/lib/common/device_info_utils.dart index c8392c3..85be3c0 100644 --- a/lib/common/device_info_utils.dart +++ b/lib/common/device_info_utils.dart @@ -1,7 +1,9 @@ import 'dart:io'; +import 'dart:math'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/foundation.dart'; +import 'package:localsend_rs/core/store/config_store.dart'; import 'package:slang/builder/model/enums.dart'; import 'package:uuid/uuid.dart'; @@ -42,17 +44,23 @@ Future> getInterface() async { return addressList; } +int randomPort() { + return 10000 + Random().nextInt(65535 - 10000); +} + Future newDevice() async { final deviceInfo = await getDeviceInfo(); final addressList = await getInterface(); + final alias = + "${deviceInfo.deviceModel ?? "unknown"}#${addressList[0].split(".")[3]}"; return NodeDevice( - alias: "test", + alias: alias, version: "2.0", deviceModel: deviceInfo.deviceModel ?? "unknown", deviceType: deviceInfo.deviceType.name, - fingerprint: const Uuid().v4(), + fingerprint: ConfigStore().deviceId(), address: addressList[0], - port: 9999, + port: randomPort(), protocol: "http", download: true, announcement: true, diff --git a/lib/core/listeners/mission_listener.dart b/lib/core/listeners/mission_listener.dart new file mode 100644 index 0000000..9be075e --- /dev/null +++ b/lib/core/listeners/mission_listener.dart @@ -0,0 +1,15 @@ +import 'package:localsend_rs/core/rust/bridge.dart'; + +import '../rust/actor/mission.dart'; + +class MissionListener { + static MissionListener? _instance; + MissionListener._(); + + static MissionListener instance() { + _instance ??= MissionListener._(); + return _instance!; + } + + Stream stream = listenMission(); +} diff --git a/lib/core/listeners/pending_mission_listener.dart b/lib/core/listeners/pending_mission_listener.dart deleted file mode 100644 index fdab352..0000000 --- a/lib/core/listeners/pending_mission_listener.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:localsend_rs/core/rust/bridge.dart'; - -import '../rust/actor/mission/pending.dart'; - -class PendingMissionListener { - static PendingMissionListener? _instance; - PendingMissionListener._(); - - static PendingMissionListener instance() { - _instance ??= PendingMissionListener._(); - return _instance!; - } - - Stream stream = listenPendingMission(); -} diff --git a/lib/core/providers/core_provider.g.dart b/lib/core/providers/core_provider.g.dart index 04f124f..dbecc26 100644 --- a/lib/core/providers/core_provider.g.dart +++ b/lib/core/providers/core_provider.g.dart @@ -6,7 +6,7 @@ part of 'core_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$coreStateHash() => r'63a9290a774a181a45e439a293e1d511afe209b0'; +String _$coreStateHash() => r'2a21926ad86879088cb49e04efbc32590a05746f'; /// See also [CoreState]. @ProviderFor(CoreState) diff --git a/lib/core/providers/mission_provider.dart b/lib/core/providers/mission_provider.dart index 49812f3..de846fb 100644 --- a/lib/core/providers/mission_provider.dart +++ b/lib/core/providers/mission_provider.dart @@ -1,23 +1,22 @@ -import 'package:localsend_rs/core/rust/actor/mission/pending.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import '../listeners/pending_mission_listener.dart'; -import '../rust/actor/model.dart'; +import '../listeners/mission_listener.dart'; +import '../rust/actor/mission.dart'; part 'mission_provider.g.dart'; @riverpod -class PendingMission extends _$PendingMission { +class CoreMission extends _$CoreMission { @override - PendingMissionDto build() { - final subPendingMission = PendingMissionListener.instance().stream.listen( + MissionInfo? build() { + final subMission = MissionListener.instance().stream.listen( (event) { state = event; }, ); ref.onDispose(() { - subPendingMission.cancel(); + subMission.cancel(); }); - return const PendingMissionDto(state: MissionState.idle); + return null; } } diff --git a/lib/core/providers/mission_provider.g.dart b/lib/core/providers/mission_provider.g.dart index cbf26a8..335763a 100644 --- a/lib/core/providers/mission_provider.g.dart +++ b/lib/core/providers/mission_provider.g.dart @@ -6,21 +6,20 @@ part of 'mission_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$pendingMissionHash() => r'4dab284ff3f064ab337359a344914bfcfadd7fa7'; +String _$coreMissionHash() => r'11026c14485ff442423627f646ecc515cb310c43'; -/// See also [PendingMission]. -@ProviderFor(PendingMission) -final pendingMissionProvider = - AutoDisposeNotifierProvider.internal( - PendingMission.new, - name: r'pendingMissionProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$pendingMissionHash, +/// See also [CoreMission]. +@ProviderFor(CoreMission) +final coreMissionProvider = + AutoDisposeNotifierProvider.internal( + CoreMission.new, + name: r'coreMissionProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') ? null : _$coreMissionHash, dependencies: null, allTransitiveDependencies: null, ); -typedef _$PendingMission = AutoDisposeNotifier; +typedef _$CoreMission = AutoDisposeNotifier; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/core/rust/actor/core.dart b/lib/core/rust/actor/core.dart index 2c49f4c..e905600 100644 --- a/lib/core/rust/actor/core.dart +++ b/lib/core/rust/actor/core.dart @@ -1,5 +1,5 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import diff --git a/lib/core/rust/actor/mission.dart b/lib/core/rust/actor/mission.dart new file mode 100644 index 0000000..d1e9b84 --- /dev/null +++ b/lib/core/rust/actor/mission.dart @@ -0,0 +1,73 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../api/model.dart'; +import '../frb_generated.dart'; +import 'model.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'package:freezed_annotation/freezed_annotation.dart' hide protected; +part 'mission.freezed.dart'; + +@freezed +sealed class FileState with _$FileState { + const FileState._(); + + const factory FileState.pending() = FileState_Pending; + const factory FileState.transfer() = FileState_Transfer; + const factory FileState.finish() = FileState_Finish; + const factory FileState.skip() = FileState_Skip; + const factory FileState.fail({ + required String msg, + }) = FileState_Fail; +} + +class MissionFileInfo { + final FileInfo info; + final FileState state; + + const MissionFileInfo({ + required this.info, + required this.state, + }); + + @override + int get hashCode => info.hashCode ^ state.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MissionFileInfo && + runtimeType == other.runtimeType && + info == other.info && + state == other.state; +} + +class MissionInfo { + final String id; + final NodeDevice sender; + final List files; + final MissionState state; + + const MissionInfo({ + required this.id, + required this.sender, + required this.files, + required this.state, + }); + + @override + int get hashCode => + id.hashCode ^ sender.hashCode ^ files.hashCode ^ state.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MissionInfo && + runtimeType == other.runtimeType && + id == other.id && + sender == other.sender && + files == other.files && + state == other.state; +} diff --git a/lib/core/rust/actor/mission/transfer.freezed.dart b/lib/core/rust/actor/mission.freezed.dart similarity index 50% rename from lib/core/rust/actor/mission/transfer.freezed.dart rename to lib/core/rust/actor/mission.freezed.dart index 980e6c3..b80fab2 100644 --- a/lib/core/rust/actor/mission/transfer.freezed.dart +++ b/lib/core/rust/actor/mission.freezed.dart @@ -3,7 +3,7 @@ // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark -part of 'transfer.dart'; +part of 'mission.dart'; // ************************************************************************** // FreezedGenerator @@ -15,7 +15,7 @@ final _privateConstructorUsedError = UnsupportedError( 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); /// @nodoc -mixin _$TransferState { +mixin _$FileState { @optionalTypeArgs TResult when({ required TResult Function() pending, @@ -46,45 +46,44 @@ mixin _$TransferState { throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) => throw _privateConstructorUsedError; } /// @nodoc -abstract class $TransferStateCopyWith<$Res> { - factory $TransferStateCopyWith( - TransferState value, $Res Function(TransferState) then) = - _$TransferStateCopyWithImpl<$Res, TransferState>; +abstract class $FileStateCopyWith<$Res> { + factory $FileStateCopyWith(FileState value, $Res Function(FileState) then) = + _$FileStateCopyWithImpl<$Res, FileState>; } /// @nodoc -class _$TransferStateCopyWithImpl<$Res, $Val extends TransferState> - implements $TransferStateCopyWith<$Res> { - _$TransferStateCopyWithImpl(this._value, this._then); +class _$FileStateCopyWithImpl<$Res, $Val extends FileState> + implements $FileStateCopyWith<$Res> { + _$FileStateCopyWithImpl(this._value, this._then); // ignore: unused_field final $Val _value; @@ -93,37 +92,35 @@ class _$TransferStateCopyWithImpl<$Res, $Val extends TransferState> } /// @nodoc -abstract class _$$TransferState_PendingImplCopyWith<$Res> { - factory _$$TransferState_PendingImplCopyWith( - _$TransferState_PendingImpl value, - $Res Function(_$TransferState_PendingImpl) then) = - __$$TransferState_PendingImplCopyWithImpl<$Res>; +abstract class _$$FileState_PendingImplCopyWith<$Res> { + factory _$$FileState_PendingImplCopyWith(_$FileState_PendingImpl value, + $Res Function(_$FileState_PendingImpl) then) = + __$$FileState_PendingImplCopyWithImpl<$Res>; } /// @nodoc -class __$$TransferState_PendingImplCopyWithImpl<$Res> - extends _$TransferStateCopyWithImpl<$Res, _$TransferState_PendingImpl> - implements _$$TransferState_PendingImplCopyWith<$Res> { - __$$TransferState_PendingImplCopyWithImpl(_$TransferState_PendingImpl _value, - $Res Function(_$TransferState_PendingImpl) _then) +class __$$FileState_PendingImplCopyWithImpl<$Res> + extends _$FileStateCopyWithImpl<$Res, _$FileState_PendingImpl> + implements _$$FileState_PendingImplCopyWith<$Res> { + __$$FileState_PendingImplCopyWithImpl(_$FileState_PendingImpl _value, + $Res Function(_$FileState_PendingImpl) _then) : super(_value, _then); } /// @nodoc -class _$TransferState_PendingImpl extends TransferState_Pending { - const _$TransferState_PendingImpl() : super._(); +class _$FileState_PendingImpl extends FileState_Pending { + const _$FileState_PendingImpl() : super._(); @override String toString() { - return 'TransferState.pending()'; + return 'FileState.pending()'; } @override bool operator ==(Object other) { return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$TransferState_PendingImpl); + (other.runtimeType == runtimeType && other is _$FileState_PendingImpl); } @override @@ -172,11 +169,11 @@ class _$TransferState_PendingImpl extends TransferState_Pending { @override @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) { return pending(this); } @@ -184,11 +181,11 @@ class _$TransferState_PendingImpl extends TransferState_Pending { @override @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) { return pending?.call(this); } @@ -196,11 +193,11 @@ class _$TransferState_PendingImpl extends TransferState_Pending { @override @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) { if (pending != null) { @@ -210,44 +207,41 @@ class _$TransferState_PendingImpl extends TransferState_Pending { } } -abstract class TransferState_Pending extends TransferState { - const factory TransferState_Pending() = _$TransferState_PendingImpl; - const TransferState_Pending._() : super._(); +abstract class FileState_Pending extends FileState { + const factory FileState_Pending() = _$FileState_PendingImpl; + const FileState_Pending._() : super._(); } /// @nodoc -abstract class _$$TransferState_TransferImplCopyWith<$Res> { - factory _$$TransferState_TransferImplCopyWith( - _$TransferState_TransferImpl value, - $Res Function(_$TransferState_TransferImpl) then) = - __$$TransferState_TransferImplCopyWithImpl<$Res>; +abstract class _$$FileState_TransferImplCopyWith<$Res> { + factory _$$FileState_TransferImplCopyWith(_$FileState_TransferImpl value, + $Res Function(_$FileState_TransferImpl) then) = + __$$FileState_TransferImplCopyWithImpl<$Res>; } /// @nodoc -class __$$TransferState_TransferImplCopyWithImpl<$Res> - extends _$TransferStateCopyWithImpl<$Res, _$TransferState_TransferImpl> - implements _$$TransferState_TransferImplCopyWith<$Res> { - __$$TransferState_TransferImplCopyWithImpl( - _$TransferState_TransferImpl _value, - $Res Function(_$TransferState_TransferImpl) _then) +class __$$FileState_TransferImplCopyWithImpl<$Res> + extends _$FileStateCopyWithImpl<$Res, _$FileState_TransferImpl> + implements _$$FileState_TransferImplCopyWith<$Res> { + __$$FileState_TransferImplCopyWithImpl(_$FileState_TransferImpl _value, + $Res Function(_$FileState_TransferImpl) _then) : super(_value, _then); } /// @nodoc -class _$TransferState_TransferImpl extends TransferState_Transfer { - const _$TransferState_TransferImpl() : super._(); +class _$FileState_TransferImpl extends FileState_Transfer { + const _$FileState_TransferImpl() : super._(); @override String toString() { - return 'TransferState.transfer()'; + return 'FileState.transfer()'; } @override bool operator ==(Object other) { return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$TransferState_TransferImpl); + (other.runtimeType == runtimeType && other is _$FileState_TransferImpl); } @override @@ -296,11 +290,11 @@ class _$TransferState_TransferImpl extends TransferState_Transfer { @override @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) { return transfer(this); } @@ -308,11 +302,11 @@ class _$TransferState_TransferImpl extends TransferState_Transfer { @override @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) { return transfer?.call(this); } @@ -320,11 +314,11 @@ class _$TransferState_TransferImpl extends TransferState_Transfer { @override @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) { if (transfer != null) { @@ -334,42 +328,41 @@ class _$TransferState_TransferImpl extends TransferState_Transfer { } } -abstract class TransferState_Transfer extends TransferState { - const factory TransferState_Transfer() = _$TransferState_TransferImpl; - const TransferState_Transfer._() : super._(); +abstract class FileState_Transfer extends FileState { + const factory FileState_Transfer() = _$FileState_TransferImpl; + const FileState_Transfer._() : super._(); } /// @nodoc -abstract class _$$TransferState_FinishImplCopyWith<$Res> { - factory _$$TransferState_FinishImplCopyWith(_$TransferState_FinishImpl value, - $Res Function(_$TransferState_FinishImpl) then) = - __$$TransferState_FinishImplCopyWithImpl<$Res>; +abstract class _$$FileState_FinishImplCopyWith<$Res> { + factory _$$FileState_FinishImplCopyWith(_$FileState_FinishImpl value, + $Res Function(_$FileState_FinishImpl) then) = + __$$FileState_FinishImplCopyWithImpl<$Res>; } /// @nodoc -class __$$TransferState_FinishImplCopyWithImpl<$Res> - extends _$TransferStateCopyWithImpl<$Res, _$TransferState_FinishImpl> - implements _$$TransferState_FinishImplCopyWith<$Res> { - __$$TransferState_FinishImplCopyWithImpl(_$TransferState_FinishImpl _value, - $Res Function(_$TransferState_FinishImpl) _then) +class __$$FileState_FinishImplCopyWithImpl<$Res> + extends _$FileStateCopyWithImpl<$Res, _$FileState_FinishImpl> + implements _$$FileState_FinishImplCopyWith<$Res> { + __$$FileState_FinishImplCopyWithImpl(_$FileState_FinishImpl _value, + $Res Function(_$FileState_FinishImpl) _then) : super(_value, _then); } /// @nodoc -class _$TransferState_FinishImpl extends TransferState_Finish { - const _$TransferState_FinishImpl() : super._(); +class _$FileState_FinishImpl extends FileState_Finish { + const _$FileState_FinishImpl() : super._(); @override String toString() { - return 'TransferState.finish()'; + return 'FileState.finish()'; } @override bool operator ==(Object other) { return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$TransferState_FinishImpl); + (other.runtimeType == runtimeType && other is _$FileState_FinishImpl); } @override @@ -418,11 +411,11 @@ class _$TransferState_FinishImpl extends TransferState_Finish { @override @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) { return finish(this); } @@ -430,11 +423,11 @@ class _$TransferState_FinishImpl extends TransferState_Finish { @override @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) { return finish?.call(this); } @@ -442,11 +435,11 @@ class _$TransferState_FinishImpl extends TransferState_Finish { @override @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) { if (finish != null) { @@ -456,41 +449,41 @@ class _$TransferState_FinishImpl extends TransferState_Finish { } } -abstract class TransferState_Finish extends TransferState { - const factory TransferState_Finish() = _$TransferState_FinishImpl; - const TransferState_Finish._() : super._(); +abstract class FileState_Finish extends FileState { + const factory FileState_Finish() = _$FileState_FinishImpl; + const FileState_Finish._() : super._(); } /// @nodoc -abstract class _$$TransferState_SkipImplCopyWith<$Res> { - factory _$$TransferState_SkipImplCopyWith(_$TransferState_SkipImpl value, - $Res Function(_$TransferState_SkipImpl) then) = - __$$TransferState_SkipImplCopyWithImpl<$Res>; +abstract class _$$FileState_SkipImplCopyWith<$Res> { + factory _$$FileState_SkipImplCopyWith(_$FileState_SkipImpl value, + $Res Function(_$FileState_SkipImpl) then) = + __$$FileState_SkipImplCopyWithImpl<$Res>; } /// @nodoc -class __$$TransferState_SkipImplCopyWithImpl<$Res> - extends _$TransferStateCopyWithImpl<$Res, _$TransferState_SkipImpl> - implements _$$TransferState_SkipImplCopyWith<$Res> { - __$$TransferState_SkipImplCopyWithImpl(_$TransferState_SkipImpl _value, - $Res Function(_$TransferState_SkipImpl) _then) +class __$$FileState_SkipImplCopyWithImpl<$Res> + extends _$FileStateCopyWithImpl<$Res, _$FileState_SkipImpl> + implements _$$FileState_SkipImplCopyWith<$Res> { + __$$FileState_SkipImplCopyWithImpl( + _$FileState_SkipImpl _value, $Res Function(_$FileState_SkipImpl) _then) : super(_value, _then); } /// @nodoc -class _$TransferState_SkipImpl extends TransferState_Skip { - const _$TransferState_SkipImpl() : super._(); +class _$FileState_SkipImpl extends FileState_Skip { + const _$FileState_SkipImpl() : super._(); @override String toString() { - return 'TransferState.skip()'; + return 'FileState.skip()'; } @override bool operator ==(Object other) { return identical(this, other) || - (other.runtimeType == runtimeType && other is _$TransferState_SkipImpl); + (other.runtimeType == runtimeType && other is _$FileState_SkipImpl); } @override @@ -539,11 +532,11 @@ class _$TransferState_SkipImpl extends TransferState_Skip { @override @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) { return skip(this); } @@ -551,11 +544,11 @@ class _$TransferState_SkipImpl extends TransferState_Skip { @override @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) { return skip?.call(this); } @@ -563,11 +556,11 @@ class _$TransferState_SkipImpl extends TransferState_Skip { @override @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) { if (skip != null) { @@ -577,26 +570,26 @@ class _$TransferState_SkipImpl extends TransferState_Skip { } } -abstract class TransferState_Skip extends TransferState { - const factory TransferState_Skip() = _$TransferState_SkipImpl; - const TransferState_Skip._() : super._(); +abstract class FileState_Skip extends FileState { + const factory FileState_Skip() = _$FileState_SkipImpl; + const FileState_Skip._() : super._(); } /// @nodoc -abstract class _$$TransferState_FailImplCopyWith<$Res> { - factory _$$TransferState_FailImplCopyWith(_$TransferState_FailImpl value, - $Res Function(_$TransferState_FailImpl) then) = - __$$TransferState_FailImplCopyWithImpl<$Res>; +abstract class _$$FileState_FailImplCopyWith<$Res> { + factory _$$FileState_FailImplCopyWith(_$FileState_FailImpl value, + $Res Function(_$FileState_FailImpl) then) = + __$$FileState_FailImplCopyWithImpl<$Res>; @useResult $Res call({String msg}); } /// @nodoc -class __$$TransferState_FailImplCopyWithImpl<$Res> - extends _$TransferStateCopyWithImpl<$Res, _$TransferState_FailImpl> - implements _$$TransferState_FailImplCopyWith<$Res> { - __$$TransferState_FailImplCopyWithImpl(_$TransferState_FailImpl _value, - $Res Function(_$TransferState_FailImpl) _then) +class __$$FileState_FailImplCopyWithImpl<$Res> + extends _$FileStateCopyWithImpl<$Res, _$FileState_FailImpl> + implements _$$FileState_FailImplCopyWith<$Res> { + __$$FileState_FailImplCopyWithImpl( + _$FileState_FailImpl _value, $Res Function(_$FileState_FailImpl) _then) : super(_value, _then); @pragma('vm:prefer-inline') @@ -604,7 +597,7 @@ class __$$TransferState_FailImplCopyWithImpl<$Res> $Res call({ Object? msg = null, }) { - return _then(_$TransferState_FailImpl( + return _then(_$FileState_FailImpl( msg: null == msg ? _value.msg : msg // ignore: cast_nullable_to_non_nullable @@ -615,22 +608,22 @@ class __$$TransferState_FailImplCopyWithImpl<$Res> /// @nodoc -class _$TransferState_FailImpl extends TransferState_Fail { - const _$TransferState_FailImpl({required this.msg}) : super._(); +class _$FileState_FailImpl extends FileState_Fail { + const _$FileState_FailImpl({required this.msg}) : super._(); @override final String msg; @override String toString() { - return 'TransferState.fail(msg: $msg)'; + return 'FileState.fail(msg: $msg)'; } @override bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && - other is _$TransferState_FailImpl && + other is _$FileState_FailImpl && (identical(other.msg, msg) || other.msg == msg)); } @@ -640,8 +633,8 @@ class _$TransferState_FailImpl extends TransferState_Fail { @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') - _$$TransferState_FailImplCopyWith<_$TransferState_FailImpl> get copyWith => - __$$TransferState_FailImplCopyWithImpl<_$TransferState_FailImpl>( + _$$FileState_FailImplCopyWith<_$FileState_FailImpl> get copyWith => + __$$FileState_FailImplCopyWithImpl<_$FileState_FailImpl>( this, _$identity); @override @@ -687,11 +680,11 @@ class _$TransferState_FailImpl extends TransferState_Fail { @override @optionalTypeArgs TResult map({ - required TResult Function(TransferState_Pending value) pending, - required TResult Function(TransferState_Transfer value) transfer, - required TResult Function(TransferState_Finish value) finish, - required TResult Function(TransferState_Skip value) skip, - required TResult Function(TransferState_Fail value) fail, + required TResult Function(FileState_Pending value) pending, + required TResult Function(FileState_Transfer value) transfer, + required TResult Function(FileState_Finish value) finish, + required TResult Function(FileState_Skip value) skip, + required TResult Function(FileState_Fail value) fail, }) { return fail(this); } @@ -699,11 +692,11 @@ class _$TransferState_FailImpl extends TransferState_Fail { @override @optionalTypeArgs TResult? mapOrNull({ - TResult? Function(TransferState_Pending value)? pending, - TResult? Function(TransferState_Transfer value)? transfer, - TResult? Function(TransferState_Finish value)? finish, - TResult? Function(TransferState_Skip value)? skip, - TResult? Function(TransferState_Fail value)? fail, + TResult? Function(FileState_Pending value)? pending, + TResult? Function(FileState_Transfer value)? transfer, + TResult? Function(FileState_Finish value)? finish, + TResult? Function(FileState_Skip value)? skip, + TResult? Function(FileState_Fail value)? fail, }) { return fail?.call(this); } @@ -711,11 +704,11 @@ class _$TransferState_FailImpl extends TransferState_Fail { @override @optionalTypeArgs TResult maybeMap({ - TResult Function(TransferState_Pending value)? pending, - TResult Function(TransferState_Transfer value)? transfer, - TResult Function(TransferState_Finish value)? finish, - TResult Function(TransferState_Skip value)? skip, - TResult Function(TransferState_Fail value)? fail, + TResult Function(FileState_Pending value)? pending, + TResult Function(FileState_Transfer value)? transfer, + TResult Function(FileState_Finish value)? finish, + TResult Function(FileState_Skip value)? skip, + TResult Function(FileState_Fail value)? fail, required TResult orElse(), }) { if (fail != null) { @@ -725,13 +718,13 @@ class _$TransferState_FailImpl extends TransferState_Fail { } } -abstract class TransferState_Fail extends TransferState { - const factory TransferState_Fail({required final String msg}) = - _$TransferState_FailImpl; - const TransferState_Fail._() : super._(); +abstract class FileState_Fail extends FileState { + const factory FileState_Fail({required final String msg}) = + _$FileState_FailImpl; + const FileState_Fail._() : super._(); String get msg; @JsonKey(ignore: true) - _$$TransferState_FailImplCopyWith<_$TransferState_FailImpl> get copyWith => + _$$FileState_FailImplCopyWith<_$FileState_FailImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/core/rust/actor/mission/pending.dart b/lib/core/rust/actor/mission/pending.dart deleted file mode 100644 index ad36130..0000000 --- a/lib/core/rust/actor/mission/pending.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. - -// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import - -import '../../api/model.dart'; -import '../../frb_generated.dart'; -import '../model.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - -class PendingMissionDto { - final Mission? mission; - final MissionState state; - - const PendingMissionDto({ - this.mission, - required this.state, - }); - - @override - int get hashCode => mission.hashCode ^ state.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is PendingMissionDto && - runtimeType == other.runtimeType && - mission == other.mission && - state == other.state; -} diff --git a/lib/core/rust/actor/mission/transfer.dart b/lib/core/rust/actor/mission/transfer.dart deleted file mode 100644 index bb20852..0000000 --- a/lib/core/rust/actor/mission/transfer.dart +++ /dev/null @@ -1,66 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. - -// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import - -import '../../api/model.dart'; -import '../../frb_generated.dart'; -import '../model.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -import 'package:freezed_annotation/freezed_annotation.dart' hide protected; -part 'transfer.freezed.dart'; - -class TransferFileInfo { - final FileInfo info; - final TransferState state; - - const TransferFileInfo({ - required this.info, - required this.state, - }); - - @override - int get hashCode => info.hashCode ^ state.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is TransferFileInfo && - runtimeType == other.runtimeType && - info == other.info && - state == other.state; -} - -class TransferMissionDto { - final MissionState state; - final List files; - - const TransferMissionDto({ - required this.state, - required this.files, - }); - - @override - int get hashCode => state.hashCode ^ files.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is TransferMissionDto && - runtimeType == other.runtimeType && - state == other.state && - files == other.files; -} - -@freezed -sealed class TransferState with _$TransferState { - const TransferState._(); - - const factory TransferState.pending() = TransferState_Pending; - const factory TransferState.transfer() = TransferState_Transfer; - const factory TransferState.finish() = TransferState_Finish; - const factory TransferState.skip() = TransferState_Skip; - const factory TransferState.fail({ - required String msg, - }) = TransferState_Fail; -} diff --git a/lib/core/rust/actor/model.dart b/lib/core/rust/actor/model.dart index 4c85244..576b26e 100644 --- a/lib/core/rust/actor/model.dart +++ b/lib/core/rust/actor/model.dart @@ -1,47 +1,11 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import '../api/model.dart'; import '../frb_generated.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -class Mission { - final String id; - final NodeDevice sender; - final Map tokenMap; - final Map reverseTokenMap; - final Map infoMap; - - const Mission({ - required this.id, - required this.sender, - required this.tokenMap, - required this.reverseTokenMap, - required this.infoMap, - }); - - @override - int get hashCode => - id.hashCode ^ - sender.hashCode ^ - tokenMap.hashCode ^ - reverseTokenMap.hashCode ^ - infoMap.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is Mission && - runtimeType == other.runtimeType && - id == other.id && - sender == other.sender && - tokenMap == other.tokenMap && - reverseTokenMap == other.reverseTokenMap && - infoMap == other.infoMap; -} - enum MissionState { idle, pending, diff --git a/lib/core/rust/api/model.dart b/lib/core/rust/api/model.dart index 6842590..4d90f14 100644 --- a/lib/core/rust/api/model.dart +++ b/lib/core/rust/api/model.dart @@ -1,5 +1,5 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import diff --git a/lib/core/rust/bridge.dart b/lib/core/rust/bridge.dart index 271aca5..86498c6 100644 --- a/lib/core/rust/bridge.dart +++ b/lib/core/rust/bridge.dart @@ -1,11 +1,10 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import import 'actor/core.dart'; -import 'actor/mission/pending.dart'; -import 'actor/mission/transfer.dart'; +import 'actor/mission.dart'; import 'actor/model.dart'; import 'api/model.dart'; import 'frb_generated.dart'; @@ -36,17 +35,18 @@ Future changeConfig({required CoreConfig config}) => Stream> listenDevice() => RustLib.instance.api.crateBridgeListenDevice(); -Stream listenPendingMission() => - RustLib.instance.api.crateBridgeListenPendingMission(); +Stream listenMission() => + RustLib.instance.api.crateBridgeListenMission(); + +Future clearMission() => RustLib.instance.api.crateBridgeClearMission(); Future cancelPending({required String id}) => RustLib.instance.api.crateBridgeCancelPending(id: id); -Future clearPending() => RustLib.instance.api.crateBridgeClearPending(); - -Stream listenTransferMission() => - RustLib.instance.api.crateBridgeListenTransferMission(); +Future acceptPending({required String id}) => + RustLib.instance.api.crateBridgeAcceptPending(id: id); -Future getLog() => RustLib.instance.api.crateBridgeGetLog(); +Stream createLogStream() => + RustLib.instance.api.crateBridgeCreateLogStream(); Future announce() => RustLib.instance.api.crateBridgeAnnounce(); diff --git a/lib/core/rust/discovery/model.dart b/lib/core/rust/discovery/model.dart deleted file mode 100644 index a243991..0000000 --- a/lib/core/rust/discovery/model.dart +++ /dev/null @@ -1,67 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0-dev.33. - -// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import - -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - -import '../frb_generated.dart'; - -class Node { - final String alias; - final String version; - final String deviceModel; - final String deviceType; - final String fingerprint; - final String address; - final int port; - final String protocol; - final bool download; - final bool announcement; - final bool announce; - - const Node({ - required this.alias, - required this.version, - required this.deviceModel, - required this.deviceType, - required this.fingerprint, - required this.address, - required this.port, - required this.protocol, - required this.download, - required this.announcement, - required this.announce, - }); - - @override - int get hashCode => - alias.hashCode ^ - version.hashCode ^ - deviceModel.hashCode ^ - deviceType.hashCode ^ - fingerprint.hashCode ^ - address.hashCode ^ - port.hashCode ^ - protocol.hashCode ^ - download.hashCode ^ - announcement.hashCode ^ - announce.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is Node && - runtimeType == other.runtimeType && - alias == other.alias && - version == other.version && - deviceModel == other.deviceModel && - deviceType == other.deviceType && - fingerprint == other.fingerprint && - address == other.address && - port == other.port && - protocol == other.protocol && - download == other.download && - announcement == other.announcement && - announce == other.announce; -} diff --git a/lib/core/rust/frb_generated.dart b/lib/core/rust/frb_generated.dart index 2351b54..f1c743c 100644 --- a/lib/core/rust/frb_generated.dart +++ b/lib/core/rust/frb_generated.dart @@ -1,11 +1,10 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field import 'actor/core.dart'; -import 'actor/mission/pending.dart'; -import 'actor/mission/transfer.dart'; +import 'actor/mission.dart'; import 'actor/model.dart'; import 'api/model.dart'; import 'bridge.dart'; @@ -59,10 +58,10 @@ class RustLib extends BaseEntrypoint { kDefaultExternalLibraryLoaderConfig; @override - String get codegenVersion => '2.0.0'; + String get codegenVersion => '2.1.0'; @override - int get rustContentHash => 185248812; + int get rustContentHash => 2101766676; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -73,6 +72,8 @@ class RustLib extends BaseEntrypoint { } abstract class RustLibApi extends BaseApi { + Future crateBridgeAcceptPending({required String id}); + Future crateBridgeAnnounce(); Future crateBridgeCancelPending({required String id}); @@ -81,18 +82,16 @@ abstract class RustLibApi extends BaseApi { Future crateBridgeChangeConfig({required CoreConfig config}); - Future crateBridgeClearPending(); + Future crateBridgeClearMission(); - Future crateBridgeGetLog(); + Stream crateBridgeCreateLogStream(); Stream> crateBridgeListenDevice(); - Stream crateBridgeListenPendingMission(); + Stream crateBridgeListenMission(); Stream crateBridgeListenServerState(); - Stream crateBridgeListenTransferMission(); - Future crateBridgeSetup({required NodeDevice device}); Future crateBridgeShutdownServer(); @@ -117,10 +116,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }); @override - Future crateBridgeAnnounce() { + Future crateBridgeAcceptPending({required String id}) { return handler.executeNormal(NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(id, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1, port: port_); }, @@ -128,6 +128,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), + constMeta: kCrateBridgeAcceptPendingConstMeta, + argValues: [id], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateBridgeAcceptPendingConstMeta => const TaskConstMeta( + debugName: "accept_pending", + argNames: ["id"], + ); + + @override + Future crateBridgeAnnounce() { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi(generalizedFrbRustBinding, serializer, + funcId: 2, port: port_); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), constMeta: kCrateBridgeAnnounceConstMeta, argValues: [], apiImpl: this, @@ -146,7 +169,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(id, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 2, port: port_); + funcId: 3, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -170,7 +193,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(addr, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 3, port: port_); + funcId: 4, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -195,7 +218,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( config, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 4, port: port_); + funcId: 5, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -213,49 +236,52 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future crateBridgeClearPending() { + Future crateBridgeClearMission() { return handler.executeNormal(NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 5, port: port_); + funcId: 6, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateBridgeClearPendingConstMeta, + constMeta: kCrateBridgeClearMissionConstMeta, argValues: [], apiImpl: this, )); } - TaskConstMeta get kCrateBridgeClearPendingConstMeta => const TaskConstMeta( - debugName: "clear_pending", + TaskConstMeta get kCrateBridgeClearMissionConstMeta => const TaskConstMeta( + debugName: "clear_mission", argNames: [], ); @override - Future crateBridgeGetLog() { - return handler.executeNormal(NormalTask( + Stream crateBridgeCreateLogStream() { + final s = RustStreamSink(); + unawaited(handler.executeNormal(NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_StreamSink_log_entry_Sse(s, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 6, port: port_); + funcId: 7, port: port_); }, codec: SseCodec( - decodeSuccessData: sse_decode_log_entry, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateBridgeGetLogConstMeta, - argValues: [], + constMeta: kCrateBridgeCreateLogStreamConstMeta, + argValues: [s], apiImpl: this, - )); + ))); + return s.stream; } - TaskConstMeta get kCrateBridgeGetLogConstMeta => const TaskConstMeta( - debugName: "get_log", - argNames: [], + TaskConstMeta get kCrateBridgeCreateLogStreamConstMeta => const TaskConstMeta( + debugName: "create_log_stream", + argNames: ["s"], ); @override @@ -266,7 +292,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_StreamSink_list_node_device_Sse(s, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 7, port: port_); + funcId: 8, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -285,29 +311,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Stream crateBridgeListenPendingMission() { - final s = RustStreamSink(); + Stream crateBridgeListenMission() { + final s = RustStreamSink(); unawaited(handler.executeNormal(NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_StreamSink_pending_mission_dto_Sse(s, serializer); + sse_encode_StreamSink_opt_box_autoadd_mission_info_Sse(s, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 8, port: port_); + funcId: 9, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateBridgeListenPendingMissionConstMeta, + constMeta: kCrateBridgeListenMissionConstMeta, argValues: [s], apiImpl: this, ))); return s.stream; } - TaskConstMeta get kCrateBridgeListenPendingMissionConstMeta => - const TaskConstMeta( - debugName: "listen_pending_mission", + TaskConstMeta get kCrateBridgeListenMissionConstMeta => const TaskConstMeta( + debugName: "listen_mission", argNames: ["s"], ); @@ -319,7 +344,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_StreamSink_bool_Sse(s, serializer); pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 9, port: port_); + funcId: 10, port: port_); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -338,33 +363,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["s"], ); - @override - Stream crateBridgeListenTransferMission() { - final s = RustStreamSink(); - unawaited(handler.executeNormal(NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_StreamSink_transfer_mission_dto_Sse(s, serializer); - pdeCallFfi(generalizedFrbRustBinding, serializer, - funcId: 10, port: port_); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateBridgeListenTransferMissionConstMeta, - argValues: [s], - apiImpl: this, - ))); - return s.stream; - } - - TaskConstMeta get kCrateBridgeListenTransferMissionConstMeta => - const TaskConstMeta( - debugName: "listen_transfer_mission", - argNames: ["s"], - ); - @override Future crateBridgeSetup({required NodeDevice device}) { return handler.executeNormal(NormalTask( @@ -457,20 +455,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return CoreConfigImpl.frbInternalDcoDecode(raw as List); } - @protected - Map dco_decode_Map_String_String(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return Map.fromEntries(dco_decode_list_record_string_string(raw) - .map((e) => MapEntry(e.$1, e.$2))); - } - - @protected - Map dco_decode_Map_String_file_info(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return Map.fromEntries(dco_decode_list_record_string_file_info(raw) - .map((e) => MapEntry(e.$1, e.$2))); - } - @protected CoreConfig dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -493,15 +477,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - RustStreamSink - dco_decode_StreamSink_pending_mission_dto_Sse(dynamic raw) { + RustStreamSink dco_decode_StreamSink_log_entry_Sse(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs throw UnimplementedError(); } @protected - RustStreamSink - dco_decode_StreamSink_transfer_mission_dto_Sse(dynamic raw) { + RustStreamSink + dco_decode_StreamSink_opt_box_autoadd_mission_info_Sse(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs throw UnimplementedError(); } @@ -519,9 +502,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission dco_decode_box_autoadd_mission(dynamic raw) { + MissionInfo dco_decode_box_autoadd_mission_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return dco_decode_mission(raw); + return dco_decode_mission_info(raw); } @protected @@ -547,48 +530,54 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - int dco_decode_i_32(dynamic raw) { + FileState dco_decode_file_state(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as int; - } - - @protected - PlatformInt64 dco_decode_i_64(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return dcoDecodeI64(raw); + switch (raw[0]) { + case 0: + return FileState_Pending(); + case 1: + return FileState_Transfer(); + case 2: + return FileState_Finish(); + case 3: + return FileState_Skip(); + case 4: + return FileState_Fail( + msg: dco_decode_String(raw[1]), + ); + default: + throw Exception("unreachable"); + } } @protected - List dco_decode_list_node_device(dynamic raw) { + int dco_decode_i_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List).map(dco_decode_node_device).toList(); + return raw as int; } @protected - Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) { + PlatformInt64 dco_decode_i_64(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as Uint8List; + return dcoDecodeI64(raw); } @protected - List<(String, FileInfo)> dco_decode_list_record_string_file_info( - dynamic raw) { + List dco_decode_list_mission_file_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List) - .map(dco_decode_record_string_file_info) - .toList(); + return (raw as List).map(dco_decode_mission_file_info).toList(); } @protected - List<(String, String)> dco_decode_list_record_string_string(dynamic raw) { + List dco_decode_list_node_device(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List).map(dco_decode_record_string_string).toList(); + return (raw as List).map(dco_decode_node_device).toList(); } @protected - List dco_decode_list_transfer_file_info(dynamic raw) { + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List).map(dco_decode_transfer_file_info).toList(); + return raw as Uint8List; } @protected @@ -606,17 +595,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission dco_decode_mission(dynamic raw) { + MissionFileInfo dco_decode_mission_file_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 5) - throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); - return Mission( + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return MissionFileInfo( + info: dco_decode_file_info(arr[0]), + state: dco_decode_file_state(arr[1]), + ); + } + + @protected + MissionInfo dco_decode_mission_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 4) + throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); + return MissionInfo( id: dco_decode_String(arr[0]), sender: dco_decode_node_device(arr[1]), - tokenMap: dco_decode_Map_String_String(arr[2]), - reverseTokenMap: dco_decode_Map_String_String(arr[3]), - infoMap: dco_decode_Map_String_file_info(arr[4]), + files: dco_decode_list_mission_file_info(arr[2]), + state: dco_decode_mission_state(arr[3]), ); } @@ -654,9 +654,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission? dco_decode_opt_box_autoadd_mission(dynamic raw) { + MissionInfo? dco_decode_opt_box_autoadd_mission_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return raw == null ? null : dco_decode_box_autoadd_mission(raw); + return raw == null ? null : dco_decode_box_autoadd_mission_info(raw); } @protected @@ -665,89 +665,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_list_prim_u_8_strict(raw); } - @protected - PendingMissionDto dco_decode_pending_mission_dto(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return PendingMissionDto( - mission: dco_decode_opt_box_autoadd_mission(arr[0]), - state: dco_decode_mission_state(arr[1]), - ); - } - - @protected - (String, FileInfo) dco_decode_record_string_file_info(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) { - throw Exception('Expected 2 elements, got ${arr.length}'); - } - return ( - dco_decode_String(arr[0]), - dco_decode_file_info(arr[1]), - ); - } - - @protected - (String, String) dco_decode_record_string_string(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) { - throw Exception('Expected 2 elements, got ${arr.length}'); - } - return ( - dco_decode_String(arr[0]), - dco_decode_String(arr[1]), - ); - } - - @protected - TransferFileInfo dco_decode_transfer_file_info(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return TransferFileInfo( - info: dco_decode_file_info(arr[0]), - state: dco_decode_transfer_state(arr[1]), - ); - } - - @protected - TransferMissionDto dco_decode_transfer_mission_dto(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return TransferMissionDto( - state: dco_decode_mission_state(arr[0]), - files: dco_decode_list_transfer_file_info(arr[1]), - ); - } - - @protected - TransferState dco_decode_transfer_state(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - switch (raw[0]) { - case 0: - return TransferState_Pending(); - case 1: - return TransferState_Transfer(); - case 2: - return TransferState_Finish(); - case 3: - return TransferState_Skip(); - case 4: - return TransferState_Fail( - msg: dco_decode_String(raw[1]), - ); - default: - throw Exception("unreachable"); - } - } - @protected int dco_decode_u_16(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -788,22 +705,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_usize(deserializer), sse_decode_i_32(deserializer)); } - @protected - Map sse_decode_Map_String_String( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_list_record_string_string(deserializer); - return Map.fromEntries(inner.map((e) => MapEntry(e.$1, e.$2))); - } - - @protected - Map sse_decode_Map_String_file_info( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_list_record_string_file_info(deserializer); - return Map.fromEntries(inner.map((e) => MapEntry(e.$1, e.$2))); - } - @protected CoreConfig sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -828,16 +729,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - RustStreamSink - sse_decode_StreamSink_pending_mission_dto_Sse( - SseDeserializer deserializer) { + RustStreamSink sse_decode_StreamSink_log_entry_Sse( + SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs throw UnimplementedError('Unreachable ()'); } @protected - RustStreamSink - sse_decode_StreamSink_transfer_mission_dto_Sse( + RustStreamSink + sse_decode_StreamSink_opt_box_autoadd_mission_info_Sse( SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs throw UnimplementedError('Unreachable ()'); @@ -857,9 +757,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission sse_decode_box_autoadd_mission(SseDeserializer deserializer) { + MissionInfo sse_decode_box_autoadd_mission_info( + SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return (sse_decode_mission(deserializer)); + return (sse_decode_mission_info(deserializer)); } @protected @@ -887,73 +788,69 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - int sse_decode_i_32(SseDeserializer deserializer) { + FileState sse_decode_file_state(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getInt32(); - } - @protected - PlatformInt64 sse_decode_i_64(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getPlatformInt64(); + var tag_ = sse_decode_i_32(deserializer); + switch (tag_) { + case 0: + return FileState_Pending(); + case 1: + return FileState_Transfer(); + case 2: + return FileState_Finish(); + case 3: + return FileState_Skip(); + case 4: + var var_msg = sse_decode_String(deserializer); + return FileState_Fail(msg: var_msg); + default: + throw UnimplementedError(''); + } } @protected - List sse_decode_list_node_device(SseDeserializer deserializer) { + int sse_decode_i_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - - var len_ = sse_decode_i_32(deserializer); - var ans_ = []; - for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_node_device(deserializer)); - } - return ans_; + return deserializer.buffer.getInt32(); } @protected - Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { + PlatformInt64 sse_decode_i_64(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - var len_ = sse_decode_i_32(deserializer); - return deserializer.buffer.getUint8List(len_); + return deserializer.buffer.getPlatformInt64(); } @protected - List<(String, FileInfo)> sse_decode_list_record_string_file_info( + List sse_decode_list_mission_file_info( SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs var len_ = sse_decode_i_32(deserializer); - var ans_ = <(String, FileInfo)>[]; + var ans_ = []; for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_record_string_file_info(deserializer)); + ans_.add(sse_decode_mission_file_info(deserializer)); } return ans_; } @protected - List<(String, String)> sse_decode_list_record_string_string( - SseDeserializer deserializer) { + List sse_decode_list_node_device(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs var len_ = sse_decode_i_32(deserializer); - var ans_ = <(String, String)>[]; + var ans_ = []; for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_record_string_string(deserializer)); + ans_.add(sse_decode_node_device(deserializer)); } return ans_; } @protected - List sse_decode_list_transfer_file_info( - SseDeserializer deserializer) { + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - var len_ = sse_decode_i_32(deserializer); - var ans_ = []; - for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_transfer_file_info(deserializer)); - } - return ans_; + return deserializer.buffer.getUint8List(len_); } @protected @@ -971,19 +868,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission sse_decode_mission(SseDeserializer deserializer) { + MissionFileInfo sse_decode_mission_file_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_info = sse_decode_file_info(deserializer); + var var_state = sse_decode_file_state(deserializer); + return MissionFileInfo(info: var_info, state: var_state); + } + + @protected + MissionInfo sse_decode_mission_info(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs var var_id = sse_decode_String(deserializer); var var_sender = sse_decode_node_device(deserializer); - var var_tokenMap = sse_decode_Map_String_String(deserializer); - var var_reverseTokenMap = sse_decode_Map_String_String(deserializer); - var var_infoMap = sse_decode_Map_String_file_info(deserializer); - return Mission( - id: var_id, - sender: var_sender, - tokenMap: var_tokenMap, - reverseTokenMap: var_reverseTokenMap, - infoMap: var_infoMap); + var var_files = sse_decode_list_mission_file_info(deserializer); + var var_state = sse_decode_mission_state(deserializer); + return MissionInfo( + id: var_id, sender: var_sender, files: var_files, state: var_state); } @protected @@ -1033,11 +933,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Mission? sse_decode_opt_box_autoadd_mission(SseDeserializer deserializer) { + MissionInfo? sse_decode_opt_box_autoadd_mission_info( + SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs if (sse_decode_bool(deserializer)) { - return (sse_decode_box_autoadd_mission(deserializer)); + return (sse_decode_box_autoadd_mission_info(deserializer)); } else { return null; } @@ -1054,72 +955,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } - @protected - PendingMissionDto sse_decode_pending_mission_dto( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_mission = sse_decode_opt_box_autoadd_mission(deserializer); - var var_state = sse_decode_mission_state(deserializer); - return PendingMissionDto(mission: var_mission, state: var_state); - } - - @protected - (String, FileInfo) sse_decode_record_string_file_info( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_String(deserializer); - var var_field1 = sse_decode_file_info(deserializer); - return (var_field0, var_field1); - } - - @protected - (String, String) sse_decode_record_string_string( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_String(deserializer); - var var_field1 = sse_decode_String(deserializer); - return (var_field0, var_field1); - } - - @protected - TransferFileInfo sse_decode_transfer_file_info(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_info = sse_decode_file_info(deserializer); - var var_state = sse_decode_transfer_state(deserializer); - return TransferFileInfo(info: var_info, state: var_state); - } - - @protected - TransferMissionDto sse_decode_transfer_mission_dto( - SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_state = sse_decode_mission_state(deserializer); - var var_files = sse_decode_list_transfer_file_info(deserializer); - return TransferMissionDto(state: var_state, files: var_files); - } - - @protected - TransferState sse_decode_transfer_state(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - - var tag_ = sse_decode_i_32(deserializer); - switch (tag_) { - case 0: - return TransferState_Pending(); - case 1: - return TransferState_Transfer(); - case 2: - return TransferState_Finish(); - case 3: - return TransferState_Skip(); - case 4: - var var_msg = sse_decode_String(deserializer); - return TransferState_Fail(msg: var_msg); - default: - throw UnimplementedError(''); - } - } - @protected int sse_decode_u_16(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -1159,22 +994,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { (self as CoreConfigImpl).frbInternalSseEncode(move: true), serializer); } - @protected - void sse_encode_Map_String_String( - Map self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_list_record_string_string( - self.entries.map((e) => (e.key, e.value)).toList(), serializer); - } - - @protected - void sse_encode_Map_String_file_info( - Map self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_list_record_string_file_info( - self.entries.map((e) => (e.key, e.value)).toList(), serializer); - } - @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -1211,26 +1030,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_StreamSink_pending_mission_dto_Sse( - RustStreamSink self, SseSerializer serializer) { + void sse_encode_StreamSink_log_entry_Sse( + RustStreamSink self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_String( self.setupAndSerialize( codec: SseCodec( - decodeSuccessData: sse_decode_pending_mission_dto, + decodeSuccessData: sse_decode_log_entry, decodeErrorData: sse_decode_AnyhowException, )), serializer); } @protected - void sse_encode_StreamSink_transfer_mission_dto_Sse( - RustStreamSink self, SseSerializer serializer) { + void sse_encode_StreamSink_opt_box_autoadd_mission_info_Sse( + RustStreamSink self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_String( self.setupAndSerialize( codec: SseCodec( - decodeSuccessData: sse_decode_transfer_mission_dto, + decodeSuccessData: sse_decode_opt_box_autoadd_mission_info, decodeErrorData: sse_decode_AnyhowException, )), serializer); @@ -1249,9 +1068,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_box_autoadd_mission(Mission self, SseSerializer serializer) { + void sse_encode_box_autoadd_mission_info( + MissionInfo self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_mission(self, serializer); + sse_encode_mission_info(self, serializer); } @protected @@ -1273,63 +1093,63 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_i_32(int self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putInt32(self); - } - - @protected - void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer) { + void sse_encode_file_state(FileState self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putPlatformInt64(self); + switch (self) { + case FileState_Pending(): + sse_encode_i_32(0, serializer); + case FileState_Transfer(): + sse_encode_i_32(1, serializer); + case FileState_Finish(): + sse_encode_i_32(2, serializer); + case FileState_Skip(): + sse_encode_i_32(3, serializer); + case FileState_Fail(msg: final msg): + sse_encode_i_32(4, serializer); + sse_encode_String(msg, serializer); + default: + throw UnimplementedError(''); + } } @protected - void sse_encode_list_node_device( - List self, SseSerializer serializer) { + void sse_encode_i_32(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.length, serializer); - for (final item in self) { - sse_encode_node_device(item, serializer); - } + serializer.buffer.putInt32(self); } @protected - void sse_encode_list_prim_u_8_strict( - Uint8List self, SseSerializer serializer) { + void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.length, serializer); - serializer.buffer.putUint8List(self); + serializer.buffer.putPlatformInt64(self); } @protected - void sse_encode_list_record_string_file_info( - List<(String, FileInfo)> self, SseSerializer serializer) { + void sse_encode_list_mission_file_info( + List self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_i_32(self.length, serializer); for (final item in self) { - sse_encode_record_string_file_info(item, serializer); + sse_encode_mission_file_info(item, serializer); } } @protected - void sse_encode_list_record_string_string( - List<(String, String)> self, SseSerializer serializer) { + void sse_encode_list_node_device( + List self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_i_32(self.length, serializer); for (final item in self) { - sse_encode_record_string_string(item, serializer); + sse_encode_node_device(item, serializer); } } @protected - void sse_encode_list_transfer_file_info( - List self, SseSerializer serializer) { + void sse_encode_list_prim_u_8_strict( + Uint8List self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_i_32(self.length, serializer); - for (final item in self) { - sse_encode_transfer_file_info(item, serializer); - } + serializer.buffer.putUint8List(self); } @protected @@ -1342,13 +1162,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_mission(Mission self, SseSerializer serializer) { + void sse_encode_mission_file_info( + MissionFileInfo self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_file_info(self.info, serializer); + sse_encode_file_state(self.state, serializer); + } + + @protected + void sse_encode_mission_info(MissionInfo self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_String(self.id, serializer); sse_encode_node_device(self.sender, serializer); - sse_encode_Map_String_String(self.tokenMap, serializer); - sse_encode_Map_String_String(self.reverseTokenMap, serializer); - sse_encode_Map_String_file_info(self.infoMap, serializer); + sse_encode_list_mission_file_info(self.files, serializer); + sse_encode_mission_state(self.state, serializer); } @protected @@ -1384,13 +1211,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_opt_box_autoadd_mission( - Mission? self, SseSerializer serializer) { + void sse_encode_opt_box_autoadd_mission_info( + MissionInfo? self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_bool(self != null, serializer); if (self != null) { - sse_encode_box_autoadd_mission(self, serializer); + sse_encode_box_autoadd_mission_info(self, serializer); } } @@ -1405,66 +1232,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } - @protected - void sse_encode_pending_mission_dto( - PendingMissionDto self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_opt_box_autoadd_mission(self.mission, serializer); - sse_encode_mission_state(self.state, serializer); - } - - @protected - void sse_encode_record_string_file_info( - (String, FileInfo) self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_String(self.$1, serializer); - sse_encode_file_info(self.$2, serializer); - } - - @protected - void sse_encode_record_string_string( - (String, String) self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_String(self.$1, serializer); - sse_encode_String(self.$2, serializer); - } - - @protected - void sse_encode_transfer_file_info( - TransferFileInfo self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_file_info(self.info, serializer); - sse_encode_transfer_state(self.state, serializer); - } - - @protected - void sse_encode_transfer_mission_dto( - TransferMissionDto self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_mission_state(self.state, serializer); - sse_encode_list_transfer_file_info(self.files, serializer); - } - - @protected - void sse_encode_transfer_state(TransferState self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - switch (self) { - case TransferState_Pending(): - sse_encode_i_32(0, serializer); - case TransferState_Transfer(): - sse_encode_i_32(1, serializer); - case TransferState_Finish(): - sse_encode_i_32(2, serializer); - case TransferState_Skip(): - sse_encode_i_32(3, serializer); - case TransferState_Fail(msg: final msg): - sse_encode_i_32(4, serializer); - sse_encode_String(msg, serializer); - default: - throw UnimplementedError(''); - } - } - @protected void sse_encode_u_16(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs diff --git a/lib/core/rust/frb_generated.io.dart b/lib/core/rust/frb_generated.io.dart index 695b173..a5315ef 100644 --- a/lib/core/rust/frb_generated.io.dart +++ b/lib/core/rust/frb_generated.io.dart @@ -1,11 +1,10 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field import 'actor/core.dart'; -import 'actor/mission/pending.dart'; -import 'actor/mission/transfer.dart'; +import 'actor/mission.dart'; import 'actor/model.dart'; import 'api/model.dart'; import 'bridge.dart'; @@ -35,12 +34,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( dynamic raw); - @protected - Map dco_decode_Map_String_String(dynamic raw); - - @protected - Map dco_decode_Map_String_file_info(dynamic raw); - @protected CoreConfig dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -54,12 +47,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw); @protected - RustStreamSink - dco_decode_StreamSink_pending_mission_dto_Sse(dynamic raw); + RustStreamSink dco_decode_StreamSink_log_entry_Sse(dynamic raw); @protected - RustStreamSink - dco_decode_StreamSink_transfer_mission_dto_Sse(dynamic raw); + RustStreamSink + dco_decode_StreamSink_opt_box_autoadd_mission_info_Sse(dynamic raw); @protected String dco_decode_String(dynamic raw); @@ -68,7 +60,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { bool dco_decode_bool(dynamic raw); @protected - Mission dco_decode_box_autoadd_mission(dynamic raw); + MissionInfo dco_decode_box_autoadd_mission_info(dynamic raw); @protected NodeDevice dco_decode_box_autoadd_node_device(dynamic raw); @@ -77,31 +69,31 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { FileInfo dco_decode_file_info(dynamic raw); @protected - int dco_decode_i_32(dynamic raw); + FileState dco_decode_file_state(dynamic raw); @protected - PlatformInt64 dco_decode_i_64(dynamic raw); + int dco_decode_i_32(dynamic raw); @protected - List dco_decode_list_node_device(dynamic raw); + PlatformInt64 dco_decode_i_64(dynamic raw); @protected - Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + List dco_decode_list_mission_file_info(dynamic raw); @protected - List<(String, FileInfo)> dco_decode_list_record_string_file_info(dynamic raw); + List dco_decode_list_node_device(dynamic raw); @protected - List<(String, String)> dco_decode_list_record_string_string(dynamic raw); + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); @protected - List dco_decode_list_transfer_file_info(dynamic raw); + LogEntry dco_decode_log_entry(dynamic raw); @protected - LogEntry dco_decode_log_entry(dynamic raw); + MissionFileInfo dco_decode_mission_file_info(dynamic raw); @protected - Mission dco_decode_mission(dynamic raw); + MissionInfo dco_decode_mission_info(dynamic raw); @protected MissionState dco_decode_mission_state(dynamic raw); @@ -113,29 +105,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { String? dco_decode_opt_String(dynamic raw); @protected - Mission? dco_decode_opt_box_autoadd_mission(dynamic raw); + MissionInfo? dco_decode_opt_box_autoadd_mission_info(dynamic raw); @protected Uint8List? dco_decode_opt_list_prim_u_8_strict(dynamic raw); - @protected - PendingMissionDto dco_decode_pending_mission_dto(dynamic raw); - - @protected - (String, FileInfo) dco_decode_record_string_file_info(dynamic raw); - - @protected - (String, String) dco_decode_record_string_string(dynamic raw); - - @protected - TransferFileInfo dco_decode_transfer_file_info(dynamic raw); - - @protected - TransferMissionDto dco_decode_transfer_mission_dto(dynamic raw); - - @protected - TransferState dco_decode_transfer_state(dynamic raw); - @protected int dco_decode_u_16(dynamic raw); @@ -156,14 +130,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( SseDeserializer deserializer); - @protected - Map sse_decode_Map_String_String( - SseDeserializer deserializer); - - @protected - Map sse_decode_Map_String_file_info( - SseDeserializer deserializer); - @protected CoreConfig sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -178,13 +144,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer); @protected - RustStreamSink - sse_decode_StreamSink_pending_mission_dto_Sse( - SseDeserializer deserializer); + RustStreamSink sse_decode_StreamSink_log_entry_Sse( + SseDeserializer deserializer); @protected - RustStreamSink - sse_decode_StreamSink_transfer_mission_dto_Sse( + RustStreamSink + sse_decode_StreamSink_opt_box_autoadd_mission_info_Sse( SseDeserializer deserializer); @protected @@ -194,7 +159,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { bool sse_decode_bool(SseDeserializer deserializer); @protected - Mission sse_decode_box_autoadd_mission(SseDeserializer deserializer); + MissionInfo sse_decode_box_autoadd_mission_info(SseDeserializer deserializer); @protected NodeDevice sse_decode_box_autoadd_node_device(SseDeserializer deserializer); @@ -203,34 +168,32 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { FileInfo sse_decode_file_info(SseDeserializer deserializer); @protected - int sse_decode_i_32(SseDeserializer deserializer); + FileState sse_decode_file_state(SseDeserializer deserializer); @protected - PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); - - @protected - List sse_decode_list_node_device(SseDeserializer deserializer); + int sse_decode_i_32(SseDeserializer deserializer); @protected - Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); @protected - List<(String, FileInfo)> sse_decode_list_record_string_file_info( + List sse_decode_list_mission_file_info( SseDeserializer deserializer); @protected - List<(String, String)> sse_decode_list_record_string_string( - SseDeserializer deserializer); + List sse_decode_list_node_device(SseDeserializer deserializer); @protected - List sse_decode_list_transfer_file_info( - SseDeserializer deserializer); + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); @protected LogEntry sse_decode_log_entry(SseDeserializer deserializer); @protected - Mission sse_decode_mission(SseDeserializer deserializer); + MissionFileInfo sse_decode_mission_file_info(SseDeserializer deserializer); + + @protected + MissionInfo sse_decode_mission_info(SseDeserializer deserializer); @protected MissionState sse_decode_mission_state(SseDeserializer deserializer); @@ -242,32 +205,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { String? sse_decode_opt_String(SseDeserializer deserializer); @protected - Mission? sse_decode_opt_box_autoadd_mission(SseDeserializer deserializer); - - @protected - Uint8List? sse_decode_opt_list_prim_u_8_strict(SseDeserializer deserializer); - - @protected - PendingMissionDto sse_decode_pending_mission_dto( - SseDeserializer deserializer); - - @protected - (String, FileInfo) sse_decode_record_string_file_info( + MissionInfo? sse_decode_opt_box_autoadd_mission_info( SseDeserializer deserializer); @protected - (String, String) sse_decode_record_string_string( - SseDeserializer deserializer); - - @protected - TransferFileInfo sse_decode_transfer_file_info(SseDeserializer deserializer); - - @protected - TransferMissionDto sse_decode_transfer_mission_dto( - SseDeserializer deserializer); - - @protected - TransferState sse_decode_transfer_state(SseDeserializer deserializer); + Uint8List? sse_decode_opt_list_prim_u_8_strict(SseDeserializer deserializer); @protected int sse_decode_u_16(SseDeserializer deserializer); @@ -290,14 +232,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( CoreConfig self, SseSerializer serializer); - @protected - void sse_encode_Map_String_String( - Map self, SseSerializer serializer); - - @protected - void sse_encode_Map_String_file_info( - Map self, SseSerializer serializer); - @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( @@ -312,12 +246,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { RustStreamSink> self, SseSerializer serializer); @protected - void sse_encode_StreamSink_pending_mission_dto_Sse( - RustStreamSink self, SseSerializer serializer); + void sse_encode_StreamSink_log_entry_Sse( + RustStreamSink self, SseSerializer serializer); @protected - void sse_encode_StreamSink_transfer_mission_dto_Sse( - RustStreamSink self, SseSerializer serializer); + void sse_encode_StreamSink_opt_box_autoadd_mission_info_Sse( + RustStreamSink self, SseSerializer serializer); @protected void sse_encode_String(String self, SseSerializer serializer); @@ -326,7 +260,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { void sse_encode_bool(bool self, SseSerializer serializer); @protected - void sse_encode_box_autoadd_mission(Mission self, SseSerializer serializer); + void sse_encode_box_autoadd_mission_info( + MissionInfo self, SseSerializer serializer); @protected void sse_encode_box_autoadd_node_device( @@ -335,12 +270,19 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_file_info(FileInfo self, SseSerializer serializer); + @protected + void sse_encode_file_state(FileState self, SseSerializer serializer); + @protected void sse_encode_i_32(int self, SseSerializer serializer); @protected void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer); + @protected + void sse_encode_list_mission_file_info( + List self, SseSerializer serializer); + @protected void sse_encode_list_node_device( List self, SseSerializer serializer); @@ -350,22 +292,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { Uint8List self, SseSerializer serializer); @protected - void sse_encode_list_record_string_file_info( - List<(String, FileInfo)> self, SseSerializer serializer); - - @protected - void sse_encode_list_record_string_string( - List<(String, String)> self, SseSerializer serializer); + void sse_encode_log_entry(LogEntry self, SseSerializer serializer); @protected - void sse_encode_list_transfer_file_info( - List self, SseSerializer serializer); + void sse_encode_mission_file_info( + MissionFileInfo self, SseSerializer serializer); @protected - void sse_encode_log_entry(LogEntry self, SseSerializer serializer); - - @protected - void sse_encode_mission(Mission self, SseSerializer serializer); + void sse_encode_mission_info(MissionInfo self, SseSerializer serializer); @protected void sse_encode_mission_state(MissionState self, SseSerializer serializer); @@ -377,36 +311,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { void sse_encode_opt_String(String? self, SseSerializer serializer); @protected - void sse_encode_opt_box_autoadd_mission( - Mission? self, SseSerializer serializer); + void sse_encode_opt_box_autoadd_mission_info( + MissionInfo? self, SseSerializer serializer); @protected void sse_encode_opt_list_prim_u_8_strict( Uint8List? self, SseSerializer serializer); - @protected - void sse_encode_pending_mission_dto( - PendingMissionDto self, SseSerializer serializer); - - @protected - void sse_encode_record_string_file_info( - (String, FileInfo) self, SseSerializer serializer); - - @protected - void sse_encode_record_string_string( - (String, String) self, SseSerializer serializer); - - @protected - void sse_encode_transfer_file_info( - TransferFileInfo self, SseSerializer serializer); - - @protected - void sse_encode_transfer_mission_dto( - TransferMissionDto self, SseSerializer serializer); - - @protected - void sse_encode_transfer_state(TransferState self, SseSerializer serializer); - @protected void sse_encode_u_16(int self, SseSerializer serializer); diff --git a/lib/core/rust/logger.dart b/lib/core/rust/logger.dart index 6619814..107e7f7 100644 --- a/lib/core/rust/logger.dart +++ b/lib/core/rust/logger.dart @@ -1,5 +1,5 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import diff --git a/lib/core/store/config_store.dart b/lib/core/store/config_store.dart index b792729..d9d21c6 100644 --- a/lib/core/store/config_store.dart +++ b/lib/core/store/config_store.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:uuid/uuid.dart'; import '../../common/constants.dart'; @@ -24,21 +25,34 @@ class ConfigStore { _instance ??= const ConfigStore._(); } - static const _themeKey = 'theme'; - static const _localeKey = 'locale'; - static const _localeModeKey = 'localeMode'; + static const _deviceIdKey = 'deviceId'; + + String deviceId() { + final deviceId = _prefs!.getString(_deviceIdKey); + if (deviceId == null) { + final newId = const Uuid().v4(); + _prefs!.setString(_deviceIdKey, newId); + return newId; + } else { + return deviceId; + } + } + + static const _themeModeKey = 'themeMode'; ThemeMode themeMode() { - final themeValue = _prefs!.getInt(_themeKey); + final themeValue = _prefs!.getInt(_themeModeKey); if (themeValue == null) return ThemeMode.system; return ThemeMode.values[themeValue]; } Future updateThemeMode(ThemeMode theme) async { - await _prefs!.setInt(_themeKey, theme.index); + await _prefs!.setInt(_themeModeKey, theme.index); } + static const _localeKey = 'locale'; + String locale() { final localeValue = _prefs!.getString(_localeKey) ?? Platform.localeName; return localeValue; @@ -48,6 +62,8 @@ class ConfigStore { await _prefs!.setString(_localeKey, locale); } + static const _localeModeKey = 'localeMode'; + LocaleMode localeMode() { final index = _prefs!.getInt(_localeModeKey) ?? 0; final localeMode = LocaleMode.values[index]; diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index 310cbc3..4f408e9 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -6,7 +6,7 @@ /// Locales: 2 /// Strings: 26 (13 per locale) /// -/// Built on 2024-07-05 at 13:47 UTC +/// Built on 2024-07-07 at 04:08 UTC // coverage:ignore-file // ignore_for_file: type=lint diff --git a/lib/main.dart b/lib/main.dart index 48993b2..9044e2c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -26,6 +27,12 @@ Future main() async { const SystemUiOverlayStyle(statusBarColor: Colors.transparent); SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); storePath = "/storage/emulated/0/Download"; + if (kDebugMode) { + createLogStream().listen((event) { + debugPrint( + '${event.level} ${event.tag} ${event.msg} ${event.timeMillis}'); + }); + } } else { storePath = (await getDownloadsDirectory())!.absolute.path; } diff --git a/lib/view/pages/frame_page.dart b/lib/view/pages/frame_page.dart index c3360aa..4158076 100644 --- a/lib/view/pages/frame_page.dart +++ b/lib/view/pages/frame_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:localsend_rs/view/pages/pending_page.dart'; +import 'package:localsend_rs/view/pages/mission_page.dart'; import '../../common/utils.dart'; import '../../common/widgets.dart'; @@ -58,39 +58,39 @@ class _FramePageState extends ConsumerState { final brightness = Theme.of(context).brightness; initOverlay(brightness); } - final data = ref.watch(pendingMissionProvider); + final data = ref.watch(coreMissionProvider); final width = MediaQuery.of(context).size.width; final frameType = getFrameType(width); - if (frameType == FrameType.compact && data.state == MissionState.pending) { - return MissionPendingPage( - isParalle: false, - ); + if (frameType == FrameType.compact) { + if (data != null && data.state == MissionState.pending) { + return const MissionPendingPage( + isParalle: false, + ); + } } - return SafeArea( - child: Scaffold( - body: getView(frameType), - bottomNavigationBar: frameType == FrameType.compact - ? BottomNavigationBar( - currentIndex: index, - onTap: (index) { - setState(() { - this.index = index; - }); - }, - items: [ - BottomNavigationBarItem( - icon: const Icon(Icons.home), - label: context.t.home.title, - ), - BottomNavigationBarItem( - icon: const Icon(Icons.settings), - label: context.t.setting.title, - ), - ], - ) - : null, - ), + return Scaffold( + body: SafeArea(child: getView(frameType)), + bottomNavigationBar: frameType == FrameType.compact + ? BottomNavigationBar( + currentIndex: index, + onTap: (index) { + setState(() { + this.index = index; + }); + }, + items: [ + BottomNavigationBarItem( + icon: const Icon(Icons.home), + label: context.t.home.title, + ), + BottomNavigationBarItem( + icon: const Icon(Icons.settings), + label: context.t.setting.title, + ), + ], + ) + : null, ); } @@ -173,7 +173,7 @@ class _FramePageState extends ConsumerState { ), ), ), - SizedBox( + const SizedBox( width: 8, ), Expanded( @@ -182,7 +182,7 @@ class _FramePageState extends ConsumerState { color: Theme.of(context).colorScheme.surface, borderRadius: BorderRadius.circular(24), ), - child: MissionPendingPage( + child: const MissionPendingPage( isParalle: true, ), ), diff --git a/lib/view/pages/home_page.dart b/lib/view/pages/home_page.dart index 4c040be..d6cb906 100644 --- a/lib/view/pages/home_page.dart +++ b/lib/view/pages/home_page.dart @@ -36,8 +36,7 @@ class _HomePageState extends State { constraints: const BoxConstraints(maxWidth: 800), child: Column( children: [ - StaticAppbar(title: context.t.home.title), - // MissionWidget(), + // StaticAppbar(title: context.t.home.title), Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( diff --git a/lib/view/pages/mission_page.dart b/lib/view/pages/mission_page.dart new file mode 100644 index 0000000..857b62f --- /dev/null +++ b/lib/view/pages/mission_page.dart @@ -0,0 +1,189 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:localsend_rs/core/rust/actor/mission.dart'; + +import '../../common/widgets.dart'; +import '../../core/providers/mission_provider.dart'; +import '../../core/rust/actor/model.dart'; +import '../../core/rust/bridge.dart'; +import '../widget/device_widget.dart'; + +class IdlePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 200, + child: Image.asset("assets/icon/logo_512.png"), + ), + const AppTitle(), + ], + ); + } +} + +class TransferPage extends StatelessWidget { + final MissionInfo mission; + final bool isParalle; + + TransferPage({super.key, required this.mission, required this.isParalle}); + + final ButtonStyle style = ElevatedButton.styleFrom( + padding: const EdgeInsets.fromLTRB(16, 16, 24, 16), + ); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: isParalle ? Colors.transparent : null, + body: Column( + children: [ + for (final file in mission.files) + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.secondaryContainer, + borderRadius: BorderRadius.circular(12)), + height: 96, + child: Row( + children: [ + Icon(Icons.file_present), + SizedBox( + width: 8, + ), + Column( + children: [ + Text(file.info.fileName), + Text(file.state.toString()), + LinearProgressIndicator(value: 0.3), + ], + ) + ], + ), + ), + ), + const SizedBox( + height: 32, + ) + ], + ), + ); + } +} + +class PendingPage extends StatelessWidget { + final MissionInfo mission; + final bool isParalle; + + PendingPage({super.key, required this.mission, required this.isParalle}); + + final ButtonStyle style = ElevatedButton.styleFrom( + padding: const EdgeInsets.fromLTRB(16, 16, 24, 16), + ); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: isParalle ? Colors.transparent : null, + body: Column( + children: [ + Expanded( + child: Center( + child: DeviceWidgetLarge(device: mission.sender), + )), + Container( + height: kToolbarHeight, + child: mission.state == MissionState.canceled + ? Center( + child: Text( + "请求已取消。", + style: TextStyle( + color: Theme.of(context).colorScheme.tertiary, + ), + ), + ) + : null, + ), + mission.state != MissionState.pending + ? ElevatedButton.icon( + onPressed: () { + clearMission(); + }, + style: style, + icon: const Icon(Icons.check_circle), + label: const Text("Close"), + ) + : OverflowBar( + spacing: 16.0, + children: [ + ElevatedButton.icon( + onPressed: () { + cancelPending(id: mission.id); + if (!isParalle) { + clearMission(); + } + }, + style: style.copyWith( + backgroundColor: WidgetStatePropertyAll( + Theme.of(context).colorScheme.tertiaryContainer, + ), + foregroundColor: WidgetStatePropertyAll( + Theme.of(context).colorScheme.tertiary, + ), + ), + icon: const Icon(Icons.cancel), + label: const Text("Cancel"), + ), + ElevatedButton.icon( + onPressed: () { + acceptPending(id: mission.id); + }, + style: style.copyWith( + backgroundColor: WidgetStatePropertyAll( + Theme.of(context).colorScheme.secondaryContainer, + ), + foregroundColor: WidgetStatePropertyAll( + Theme.of(context).colorScheme.secondary, + ), + ), + icon: const Icon(Icons.check_circle), + label: const Text("Accept"), + ), + ], + ), + const SizedBox( + height: 32, + ) + ], + ), + ); + } +} + +class MissionPendingPage extends ConsumerWidget { + final bool isParalle; + + const MissionPendingPage({super.key, this.isParalle = false}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final data = ref.watch(coreMissionProvider); + if (data != null) { + switch (data.state) { + case MissionState.pending: + case MissionState.canceled: + return PendingPage(mission: data, isParalle: isParalle); + case MissionState.transfering: + case MissionState.failed: + case MissionState.finished: + return TransferPage(mission: data, isParalle: isParalle); + default: + return IdlePage(); + } + } + return IdlePage(); + } +} diff --git a/lib/view/pages/pending_page.dart b/lib/view/pages/pending_page.dart deleted file mode 100644 index 895144b..0000000 --- a/lib/view/pages/pending_page.dart +++ /dev/null @@ -1,108 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; - -import '../../common/widgets.dart'; -import '../../core/providers/mission_provider.dart'; -import '../../core/rust/actor/model.dart'; -import '../../core/rust/bridge.dart'; -import '../widget/device_widget.dart'; - -class MissionPendingPage extends ConsumerWidget { - final bool isParalle; - - final ButtonStyle style = ElevatedButton.styleFrom( - padding: EdgeInsets.fromLTRB(16, 16, 24, 16), - ); - - MissionPendingPage({super.key, this.isParalle = false}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final data = ref.watch(pendingMissionProvider); - if (data.mission != null) { - final mission = data.mission!; - return Scaffold( - backgroundColor: isParalle ? Colors.transparent : null, - body: Column( - children: [ - Expanded( - child: Center( - child: DeviceWidgetLarge(device: mission.sender), - )), - Container( - height: kToolbarHeight, - child: data.state == MissionState.canceled - ? Center( - child: Text( - "请求已取消。", - style: TextStyle( - color: Theme.of(context).colorScheme.tertiary, - ), - ), - ) - : null, - ), - data.state != MissionState.pending - ? ElevatedButton.icon( - onPressed: () { - clearPending(); - }, - style: style, - icon: Icon(Icons.check_circle), - label: Text("Close"), - ) - : OverflowBar( - spacing: 16.0, - children: [ - ElevatedButton.icon( - onPressed: () { - cancelPending(id: mission.id); - if (!isParalle) { - clearPending(); - } - }, - style: style.copyWith( - backgroundColor: WidgetStatePropertyAll( - Theme.of(context).colorScheme.tertiaryContainer, - ), - foregroundColor: WidgetStatePropertyAll( - Theme.of(context).colorScheme.tertiary, - ), - ), - icon: Icon(Icons.cancel), - label: Text("Cancel"), - ), - ElevatedButton.icon( - onPressed: () {}, - style: style.copyWith( - backgroundColor: WidgetStatePropertyAll( - Theme.of(context).colorScheme.secondaryContainer, - ), - foregroundColor: WidgetStatePropertyAll( - Theme.of(context).colorScheme.secondary, - ), - ), - icon: Icon(Icons.check_circle), - label: Text("Accept"), - ), - ], - ), - SizedBox( - height: 32, - ) - ], - ), - ); - } - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - height: 200, - child: Image.asset("assets/icon/logo_512.png"), - ), - AppTitle(), - ], - ); - } -} diff --git a/pubspec.lock b/pubspec.lock index a8adc83..a79ff1a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -269,10 +269,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "77befdddf51050e1635a04d2bcfff230089ce7294e642d00da58cd079c0de0c8" + sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714 url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "5.5.0+1" dio_web_adapter: dependency: transitive description: @@ -372,10 +372,10 @@ packages: dependency: "direct main" description: name: flutter_rust_bridge - sha256: f703c4b50e253e53efc604d50281bbaefe82d615856f8ae1e7625518ae252e98 + sha256: fac14d2dd67eeba29a20e5d99fac0d4d9fcd552cdf6bf4f8945f7679c6b07b1d url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" flutter_test: dependency: "direct dev" description: flutter @@ -668,54 +668,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.1" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb" - url: "https://pub.dev" - source: hosted - version: "11.3.1" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - sha256: b29a799ca03be9f999aa6c39f7de5209482d638e6f857f6b93b0875c618b7e54 - url: "https://pub.dev" - source: hosted - version: "12.0.7" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0 - url: "https://pub.dev" - source: hosted - version: "9.4.5" - permission_handler_html: - dependency: transitive - description: - name: permission_handler_html - sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" - url: "https://pub.dev" - source: hosted - version: "0.1.1" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20" - url: "https://pub.dev" - source: hosted - version: "4.2.1" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" - url: "https://pub.dev" - source: hosted - version: "0.2.1" petitparser: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 180c513..1d2011c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,11 +38,11 @@ dependencies: cupertino_icons: ^1.0.2 rust_builder: path: rust_builder - flutter_rust_bridge: 2.0.0 + flutter_rust_bridge: ^2.1.0 dio: ^5.4.0 freezed_annotation: ^2.4.2 path_provider: ^2.1.1 - permission_handler: ^11.1.0 + # permission_handler: ^11.1.0 flutter_riverpod: ^2.4.9 riverpod_annotation: ^2.3.3 shared_preferences: ^2.2.2 diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 4ec67e0..2fa3cd7 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" crate-type = ["cdylib", "staticlib"] [dependencies] -flutter_rust_bridge = "=2.0.0" +flutter_rust_bridge = "=2.1.0" axum = { version = "0.7.3" } rand = "0.8.5" serde = "1.0.193" diff --git a/rust/src/actor/core.rs b/rust/src/actor/core.rs index 404c864..3bb2274 100644 --- a/rust/src/actor/core.rs +++ b/rust/src/actor/core.rs @@ -62,7 +62,6 @@ impl CoreActor { let (tx, rx) = watch::channel(false); let mut core_config = CoreConfig::default(); core_config.port = device.port; - core_config.interface_addr = Ipv4Addr::from_str(&device.address).unwrap(); CoreActor { receiver, context: AppContext { diff --git a/rust/src/actor/mission.rs b/rust/src/actor/mission.rs index bfc5101..89f0479 100644 --- a/rust/src/actor/mission.rs +++ b/rust/src/actor/mission.rs @@ -1,6 +1,40 @@ +use lazy_static::lazy_static; + +use crate::api::model::FileInfo; + +use super::model::{MissionState, NodeDevice}; + +pub mod notify; pub mod pending; pub mod transfer; +lazy_static! { + pub static ref MISSION_NOTIFY: notify::Handle = notify::Handle::new(); +} + +#[derive(Clone)] +pub struct MissionInfo { + pub id: String, + pub sender: NodeDevice, + pub files: Vec, + pub state: MissionState, +} + +#[derive(Debug, Clone)] +pub struct MissionFileInfo { + pub info: FileInfo, + pub state: FileState, +} + +#[derive(Debug, Clone)] +pub enum FileState { + Pending, + Transfer, + Finish, + Skip, + Fail { msg: String }, +} + #[derive(Clone)] pub struct MissionHandle { pub pending: pending::Handle, diff --git a/rust/src/actor/mission/mission.rs.template.rs b/rust/src/actor/mission/mission.rs.template.rs deleted file mode 100644 index 6506cb5..0000000 --- a/rust/src/actor/mission/mission.rs.template.rs +++ /dev/null @@ -1,75 +0,0 @@ -use std::collections::HashMap; - -use log::debug; -use tokio::sync::{mpsc, oneshot, watch}; - -use crate::actor::model::{Mission, MissionState}; - -struct MissionStore { - mission_map: HashMap, -} - -struct MissionActor { - receiver: mpsc::Receiver, - store: MissionStore, -} - -enum MissionMessage { - StartMission { - mission: Mission, - respond_to: oneshot::Sender<()>, - }, - GetMission { - respond_to: oneshot::Sender>, - }, -} - -impl MissionActor { - fn new(receiver: mpsc::Receiver) -> Self { - let store: MissionStore = MissionStore { - mission_map: HashMap::new(), - }; - MissionActor { receiver, store } - } - async fn handle_message(&mut self, msg: MissionMessage) { - match msg { - MissionMessage::StartMission { - mission, - respond_to, - } => todo!(), - MissionMessage::GetMission { respond_to } => { - let result = self.store.mission_map.clone(); - let _ = respond_to.send(result); - } - } - } -} - -async fn run_mission_actor(mut actor: MissionActor) { - while let Some(msg) = actor.receiver.recv().await { - actor.handle_message(msg).await; - } -} - -#[derive(Clone)] -pub struct MissionActorHandle { - sender: mpsc::Sender, -} - -impl MissionActorHandle { - pub fn new() -> Self { - let (sender, receiver) = mpsc::channel(8); - let actor = MissionActor::new(receiver); - tokio::spawn(run_mission_actor(actor)); - - Self { sender } - } - - pub async fn get(&self) -> HashMap { - let (send, recv) = oneshot::channel(); - let msg = MissionMessage::GetMission { respond_to: send }; - - let _ = self.sender.send(msg).await; - recv.await.expect("Actor task has been killed") - } -} diff --git a/rust/src/actor/mission/notify.rs b/rust/src/actor/mission/notify.rs new file mode 100644 index 0000000..431bf1f --- /dev/null +++ b/rust/src/actor/mission/notify.rs @@ -0,0 +1,96 @@ +use log::{debug, trace}; +use tokio::sync::{mpsc, oneshot, watch}; + +use crate::{ + actor::{ + mission::MISSION_NOTIFY, + model::{Mission, MissionState, NodeDevice}, + }, + api::model::FileInfo, +}; + +use super::MissionInfo; + +enum Message { + Notify { + mission: Option, + }, + Listen { + respond_to: oneshot::Sender>>, + }, + Clear, +} + +struct Actor { + receiver: mpsc::Receiver, + notify: watch::Sender>, + listener: watch::Receiver>, +} + +impl Actor { + fn new(receiver: mpsc::Receiver) -> Self { + let (tx, rx) = watch::channel(None); + + Actor { + receiver, + notify: tx, + listener: rx, + } + } + async fn handle_message(&mut self, msg: Message) { + match msg { + Message::Notify { mission } => { + trace!("mission changed"); + let _ = self.notify.send(mission); + } + Message::Listen { respond_to } => { + let rx = self.listener.clone(); + let _ = respond_to.send(rx); + } + Message::Clear => { + let _ = self.notify.send(None); + } + } + } +} + +async fn run_notify_actor(mut actor: Actor) { + while let Some(msg) = actor.receiver.recv().await { + actor.handle_message(msg).await; + } +} + +#[derive(Clone)] +pub struct Handle { + sender: mpsc::Sender, +} + +impl Handle { + pub fn new() -> Self { + let (sender, receiver) = mpsc::channel(8); + let actor = Actor::new(receiver); + tokio::spawn(run_notify_actor(actor)); + + Self { sender } + } + + pub async fn listen(&self) -> watch::Receiver> { + let (send, recv) = oneshot::channel(); + let msg = Message::Listen { respond_to: send }; + + let _ = self.sender.send(msg).await; + recv.await.expect("Actor task has been killed") + } + + pub async fn notify(&self, mission: Option) { + let msg = Message::Notify { mission }; + let _ = self.sender.send(msg).await; + } + pub async fn clear(&self) { + let (send, recv) = oneshot::channel(); + let msg = Message::Clear; + + let _ = self.sender.send(msg).await; + recv.await.expect("Actor task has been killed") + } +} diff --git a/rust/src/actor/mission/pending.rs b/rust/src/actor/mission/pending.rs index e7cd734..d97f52f 100644 --- a/rust/src/actor/mission/pending.rs +++ b/rust/src/actor/mission/pending.rs @@ -3,7 +3,7 @@ use tokio::sync::{mpsc, oneshot, watch}; use crate::actor::model::{Mission, MissionState}; -use super::transfer; +use super::{transfer, FileState, MissionFileInfo, MissionInfo, MISSION_NOTIFY}; enum Message { Add { @@ -14,16 +14,10 @@ enum Message { id: String, respond_to: oneshot::Sender<()>, }, - Clear { - respond_to: oneshot::Sender<()>, - }, Accept { id: String, respond_to: oneshot::Sender<()>, }, - Listen { - respond_to: oneshot::Sender>, - }, } pub struct PendingMission { @@ -31,10 +25,22 @@ pub struct PendingMission { pub notify: watch::Sender, } -#[derive(Clone)] -pub struct PendingMissionDto { - pub mission: Option, - pub state: MissionState, +impl MissionInfo { + fn from_mission(mission: Mission) -> Self { + Self { + id: mission.id, + sender: mission.sender, + files: mission + .info_map + .values() + .map(|x| MissionFileInfo { + info: x.clone(), + state: FileState::Pending, + }) + .collect::>(), + state: MissionState::Pending, + } + } } struct MissionStore { @@ -45,17 +51,10 @@ struct Actor { transfer: transfer::Handle, receiver: mpsc::Receiver, store: MissionStore, - notify: watch::Sender, - listener: watch::Receiver, } impl Actor { fn new(receiver: mpsc::Receiver, transfer: transfer::Handle) -> Self { - let (tx, rx) = watch::channel(PendingMissionDto { - mission: None, - state: MissionState::Idle, - }); - let store: MissionStore = MissionStore { mission: Option::None, }; @@ -63,8 +62,6 @@ impl Actor { receiver, store, transfer, - notify: tx, - listener: rx, } } async fn handle_message(&mut self, msg: Message) { @@ -89,10 +86,9 @@ impl Actor { }; self.store.mission.replace(pending_mission); - let _ = self.notify.send(PendingMissionDto { - mission: Some(mission), - state: MissionState::Pending, - }); + MISSION_NOTIFY + .notify(Some(MissionInfo::from_mission(mission))) + .await; let _ = respond_to.send(rx); } Message::Cancel { id, respond_to } => { @@ -101,10 +97,9 @@ impl Actor { if mission.mission.id == id { let mission = self.store.mission.take().unwrap(); let _ = mission.notify.send(MissionState::Canceled); - let _ = self.notify.send(PendingMissionDto { - mission: Some(mission.mission), - state: MissionState::Canceled, - }); + MISSION_NOTIFY + .notify(Some(MissionInfo::from_mission(mission.mission))) + .await; } } None => {} @@ -112,14 +107,6 @@ impl Actor { let _ = respond_to.send(()); } - Message::Clear { respond_to } => { - let _ = self.notify.send(PendingMissionDto { - mission: None, - state: MissionState::Idle, - }); - - let _ = respond_to.send(()); - } Message::Accept { id, respond_to } => { match &self.store.mission { Some(mission) => { @@ -134,10 +121,6 @@ impl Actor { let _ = respond_to.send(()); } - Message::Listen { respond_to } => { - let rx = self.listener.clone(); - let _ = respond_to.send(rx); - } } } } @@ -161,15 +144,6 @@ impl Handle { Self { sender } } - - pub async fn listen(&self) -> watch::Receiver { - let (send, recv) = oneshot::channel(); - let msg = Message::Listen { respond_to: send }; - - let _ = self.sender.send(msg).await; - recv.await.expect("Actor task has been killed") - } - pub async fn add(&self, mission: Mission) -> watch::Receiver { let (send, recv) = oneshot::channel(); let msg = Message::Add { @@ -180,14 +154,6 @@ impl Handle { let _ = self.sender.send(msg).await; recv.await.expect("Actor task has been killed") } - pub async fn clear(&self) { - let (send, recv) = oneshot::channel(); - let msg = Message::Clear { respond_to: send }; - - let _ = self.sender.send(msg).await; - recv.await.expect("Actor task has been killed") - } - pub async fn cancel(&self, id: String) { let (send, recv) = oneshot::channel(); debug!("cancel mission {}", id); diff --git a/rust/src/actor/mission/transfer.rs b/rust/src/actor/mission/transfer.rs index 993eb99..6041968 100644 --- a/rust/src/actor/mission/transfer.rs +++ b/rust/src/actor/mission/transfer.rs @@ -4,18 +4,17 @@ use log::debug; use tokio::sync::{mpsc, oneshot, watch}; use crate::{ - actor::model::{Mission, MissionState, TaskState}, + actor::model::{Mission, MissionState, NodeDevice, TaskState}, api::model::FileInfo, }; +use super::{FileState, MissionFileInfo, MissionInfo, MISSION_NOTIFY}; + enum Message { Add { mission: Mission, respond_to: oneshot::Sender>, }, - Listen { - respond_to: oneshot::Sender, String>>, - }, ListenTask { token: String, respond_to: oneshot::Sender, String>>, @@ -32,7 +31,7 @@ enum Message { StateTask { id: String, token: String, - state: TransferState, + state: FileState, respond_to: oneshot::Sender<()>, }, Cancel { @@ -40,41 +39,11 @@ enum Message { respond_to: oneshot::Sender<()>, }, } - -#[derive(Debug, Clone)] -pub struct TransferMissionDto { - pub state: MissionState, - pub files: Vec, -} - -impl TransferMissionDto { - pub fn empty() -> Self { - TransferMissionDto { - state: MissionState::Pending, - files: Vec::new(), - } - } -} - -#[derive(Debug, Clone)] -pub struct TransferFileInfo { - pub info: FileInfo, - pub state: TransferState, -} - -#[derive(Debug, Clone)] -pub enum TransferState { - Pending, - Transfer, - Finish, - Skip, - Fail { msg: String }, -} - #[derive(Debug, Clone)] struct TransferMission { - info: Mission, - files: HashMap, + id: String, + sender: NodeDevice, + files: HashMap, state: MissionState, } struct MissionStore { @@ -85,8 +54,6 @@ struct MissionStore { struct Actor { receiver: mpsc::Receiver, store: MissionStore, - notify: watch::Sender, - listener: watch::Receiver, } #[derive(Debug, Clone)] @@ -96,29 +63,28 @@ struct TransferTask { progress: watch::Receiver, } +impl MissionInfo { + fn from_transfer_mission(mission: TransferMission) -> Self { + Self { + id: mission.id, + sender: mission.sender, + files: mission + .files + .values() + .map(|x| x.clone()) + .collect::>(), + state: mission.state, + } + } +} + impl Actor { fn new(receiver: mpsc::Receiver) -> Self { - let (tx, rx) = watch::channel(TransferMissionDto::empty()); let store: MissionStore = MissionStore { mission: Option::None, task: Option::None, }; - Actor { - receiver, - store, - notify: tx, - listener: rx, - } - } - pub fn notify(&self, mission: TransferMission) { - let _ = self.notify.send(TransferMissionDto { - state: mission.state, - files: mission - .files - .values() - .map(|x| x.clone()) - .collect::>(), - }); + Actor { receiver, store } } async fn handle_message(&mut self, msg: Message) { match msg { @@ -136,44 +102,31 @@ impl Actor { let token_map = mission.token_map.clone(); let info_map = mission.info_map.clone(); for (k, v) in token_map { - let info = TransferFileInfo { - state: TransferState::Pending, + let info = MissionFileInfo { + state: FileState::Pending, info: info_map.get(&v).unwrap().clone(), }; files.insert(k, info); } - let (_tx, _rx) = watch::channel(TransferMissionDto { - state: MissionState::Transfering, - files: files.values().map(|x| x.clone()).collect::>(), - }); - - let pending_mission = TransferMission { + let transfer_mission = TransferMission { + id: mission.id, + sender: mission.sender, state: MissionState::Transfering, - info: mission, files: files, }; - self.store.mission.replace(pending_mission); + self.store.mission.replace(transfer_mission.clone()); + MISSION_NOTIFY.notify(Some(MissionInfo::from_transfer_mission(transfer_mission))); let _ = respond_to.send(Ok(())); } - Message::Listen { respond_to } => match &self.store.mission { - Some(_mission) => { - let rx = self.listener.clone(); - let _ = respond_to.send(Ok(rx)); - } - None => { - let _ = respond_to.send(Err("mission not exists".to_string())); - return; - } - }, Message::StartTask { id, token, respond_to, } => match &self.store.mission { Some(mission) => { - if mission.info.id != id { + if mission.id != id { let _ = respond_to.send(Err("mission not exist".to_string())); return; } @@ -203,7 +156,7 @@ impl Actor { Message::Finish { id, respond_to } => { match &self.store.mission { Some(mission) => { - if mission.info.id == id { + if mission.id == id { let _ = self.store.mission.take(); } } @@ -220,10 +173,11 @@ impl Actor { } => { match &self.store.mission { Some(mission) => { - if mission.info.id == id { + if mission.id == id { let mut mission = self.store.mission.take().unwrap(); mission.state = MissionState::Canceled; - let _ = self.notify(mission); + MISSION_NOTIFY + .notify(Some(MissionInfo::from_transfer_mission(mission))); } } None => {} @@ -234,10 +188,11 @@ impl Actor { Message::Cancel { id, respond_to } => { match &self.store.mission { Some(mission) => { - if mission.info.id == id { + if mission.id == id { let mut mission = self.store.mission.take().unwrap(); mission.state = MissionState::Canceled; - let _ = self.notify(mission); + MISSION_NOTIFY + .notify(Some(MissionInfo::from_transfer_mission(mission))); } } None => {} @@ -305,15 +260,6 @@ impl Handle { recv.await.expect("Actor task has been killed") } - pub async fn listen(&self) -> Result, String> { - let (send, recv) = oneshot::channel(); - let msg = Message::Listen { respond_to: send }; - - let _ = self.sender.send(msg).await; - - recv.await.expect("Actor task has been killed") - } - pub async fn listen_task_progress( &self, token: String, @@ -329,7 +275,7 @@ impl Handle { recv.await.expect("Actor task has been killed") } - pub async fn fail_file(&self, id: String, token: String, state: TransferState) { + pub async fn fail_file(&self, id: String, token: String, state: FileState) { let (send, recv) = oneshot::channel(); let msg = Message::StateTask { id, diff --git a/rust/src/bridge.rs b/rust/src/bridge.rs index 3489835..2ace3d8 100644 --- a/rust/src/bridge.rs +++ b/rust/src/bridge.rs @@ -7,11 +7,11 @@ use tokio::{net::UdpSocket, sync::OnceCell}; use crate::{ actor::{ core::{CoreActorHandle, CoreConfig}, - mission::{pending::PendingMissionDto, transfer::TransferMissionDto}, + mission::{MissionInfo, MISSION_NOTIFY}, model::NodeDevice, }, frb_generated::StreamSink, - logger, + logger::{self, LogEntry}, }; lazy_static! { @@ -64,8 +64,8 @@ pub async fn listen_device(s: StreamSink>) { } } -pub async fn listen_pending_mission(s: StreamSink) { - let mut rx = _get_core().mission.pending.listen().await; +pub async fn listen_mission(s: StreamSink>) { + let mut rx = MISSION_NOTIFY.listen().await; loop { let _ = rx.changed().await; debug!("mission change"); @@ -74,34 +74,20 @@ pub async fn listen_pending_mission(s: StreamSink) { } } +pub async fn clear_mission() { + MISSION_NOTIFY.clear().await; +} + pub async fn cancel_pending(id: String) { _get_core().mission.pending.cancel(id).await; } -pub async fn clear_pending() { - _get_core().mission.pending.clear().await; +pub async fn accept_pending(id: String) { + _get_core().mission.pending.accept(id).await; } -pub async fn listen_transfer_mission(s: StreamSink) { - let rx = _get_core().mission.transfer.listen().await; - if rx.is_err() { - panic!("no transfering mission"); - } - let mut rx = rx.unwrap(); - loop { - let _ = rx.changed().await; - let data = rx.borrow().clone(); - let _ = s.add(data); - } -} - -pub fn get_log() -> logger::LogEntry { - logger::LogEntry { - time_millis: 0, - level: 0, - tag: String::new(), - msg: String::new(), - } +pub fn create_log_stream(s: StreamSink) { + logger::SendToDartLogger::set_stream_sink(s); } pub async fn announce() { diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index 1081b36..ee7c465 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -1,5 +1,5 @@ // This file is automatically generated, so please do not edit it. -// Generated by `flutter_rust_bridge`@ 2.0.0. +// Generated by `flutter_rust_bridge`@ 2.1.0. #![allow( non_camel_case_types, @@ -37,8 +37,8 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_opaque = RustOpaqueMoi, default_rust_auto_opaque = RustAutoOpaqueMoi, ); -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.0.0"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 185248812; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.1.0"; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 2101766676; // Section: executor @@ -46,6 +46,44 @@ flutter_rust_bridge::frb_generated_default_handler!(); // Section: wire_funcs +fn wire__crate__bridge__accept_pending_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "accept_pending", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok({ + crate::bridge::accept_pending(api_id).await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__bridge__announce_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -197,7 +235,7 @@ fn wire__crate__bridge__change_config_impl( }, ) } -fn wire__crate__bridge__clear_pending_impl( +fn wire__crate__bridge__clear_mission_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -205,7 +243,7 @@ fn wire__crate__bridge__clear_pending_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "clear_pending", + debug_name: "clear_mission", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -224,7 +262,7 @@ fn wire__crate__bridge__clear_pending_impl( transform_result_sse::<_, ()>( (move || async move { let output_ok = Result::<_, ()>::Ok({ - crate::bridge::clear_pending().await; + crate::bridge::clear_mission().await; })?; Ok(output_ok) })() @@ -234,7 +272,7 @@ fn wire__crate__bridge__clear_pending_impl( }, ) } -fn wire__crate__bridge__get_log_impl( +fn wire__crate__bridge__create_log_stream_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -242,7 +280,7 @@ fn wire__crate__bridge__get_log_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_log", + debug_name: "create_log_stream", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -256,10 +294,16 @@ fn wire__crate__bridge__get_log_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_s = >::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::bridge::get_log())?; + let output_ok = Result::<_, ()>::Ok({ + crate::bridge::create_log_stream(api_s); + })?; Ok(output_ok) })()) } @@ -307,7 +351,7 @@ fn wire__crate__bridge__listen_device_impl( }, ) } -fn wire__crate__bridge__listen_pending_mission_impl( +fn wire__crate__bridge__listen_mission_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -315,7 +359,7 @@ fn wire__crate__bridge__listen_pending_mission_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "listen_pending_mission", + debug_name: "listen_mission", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -330,7 +374,7 @@ fn wire__crate__bridge__listen_pending_mission_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_s = , flutter_rust_bridge::for_generated::SseCodec, >>::sse_decode(&mut deserializer); deserializer.end(); @@ -338,7 +382,7 @@ fn wire__crate__bridge__listen_pending_mission_impl( transform_result_sse::<_, ()>( (move || async move { let output_ok = Result::<_, ()>::Ok({ - crate::bridge::listen_pending_mission(api_s).await; + crate::bridge::listen_mission(api_s).await; })?; Ok(output_ok) })() @@ -389,47 +433,6 @@ fn wire__crate__bridge__listen_server_state_impl( }, ) } -fn wire__crate__bridge__listen_transfer_mission_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "listen_transfer_mission", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_s = >::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::bridge::listen_transfer_mission(api_s).await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__bridge__setup_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -569,22 +572,6 @@ impl SseDecode for CoreConfig { } } -impl SseDecode for std::collections::HashMap { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return inner.into_iter().collect(); - } -} - -impl SseDecode for std::collections::HashMap { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return inner.into_iter().collect(); - } -} - impl SseDecode for RustOpaqueMoi> { @@ -617,10 +604,7 @@ impl SseDecode } impl SseDecode - for StreamSink< - crate::actor::mission::pending::PendingMissionDto, - flutter_rust_bridge::for_generated::SseCodec, - > + for StreamSink { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -631,7 +615,7 @@ impl SseDecode impl SseDecode for StreamSink< - crate::actor::mission::transfer::TransferMissionDto, + Option, flutter_rust_bridge::for_generated::SseCodec, > { @@ -677,51 +661,55 @@ impl SseDecode for crate::api::model::FileInfo { } } -impl SseDecode for i32 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_i32::().unwrap() - } -} - -impl SseDecode for i64 { +impl SseDecode for crate::actor::mission::FileState { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_i64::().unwrap() + let mut tag_ = ::sse_decode(deserializer); + match tag_ { + 0 => { + return crate::actor::mission::FileState::Pending; + } + 1 => { + return crate::actor::mission::FileState::Transfer; + } + 2 => { + return crate::actor::mission::FileState::Finish; + } + 3 => { + return crate::actor::mission::FileState::Skip; + } + 4 => { + let mut var_msg = ::sse_decode(deserializer); + return crate::actor::mission::FileState::Fail { msg: var_msg }; + } + _ => { + unimplemented!(""); + } + } } } -impl SseDecode for Vec { +impl SseDecode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); - } - return ans_; + deserializer.cursor.read_i32::().unwrap() } } -impl SseDecode for Vec { +impl SseDecode for i64 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); - } - return ans_; + deserializer.cursor.read_i64::().unwrap() } } -impl SseDecode for Vec<(String, crate::api::model::FileInfo)> { +impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut len_ = ::sse_decode(deserializer); let mut ans_ = vec![]; for idx_ in 0..len_ { - ans_.push(<(String, crate::api::model::FileInfo)>::sse_decode( + ans_.push(::sse_decode( deserializer, )); } @@ -729,27 +717,25 @@ impl SseDecode for Vec<(String, crate::api::model::FileInfo)> { } } -impl SseDecode for Vec<(String, String)> { +impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut len_ = ::sse_decode(deserializer); let mut ans_ = vec![]; for idx_ in 0..len_ { - ans_.push(<(String, String)>::sse_decode(deserializer)); + ans_.push(::sse_decode(deserializer)); } return ans_; } } -impl SseDecode for Vec { +impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut len_ = ::sse_decode(deserializer); let mut ans_ = vec![]; for idx_ in 0..len_ { - ans_.push( - ::sse_decode(deserializer), - ); + ans_.push(::sse_decode(deserializer)); } return ans_; } @@ -771,25 +757,30 @@ impl SseDecode for crate::logger::LogEntry { } } -impl SseDecode for crate::actor::model::Mission { +impl SseDecode for crate::actor::mission::MissionFileInfo { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_info = ::sse_decode(deserializer); + let mut var_state = ::sse_decode(deserializer); + return crate::actor::mission::MissionFileInfo { + info: var_info, + state: var_state, + }; + } +} + +impl SseDecode for crate::actor::mission::MissionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_id = ::sse_decode(deserializer); let mut var_sender = ::sse_decode(deserializer); - let mut var_tokenMap = - >::sse_decode(deserializer); - let mut var_reverseTokenMap = - >::sse_decode(deserializer); - let mut var_infoMap = - >::sse_decode( - deserializer, - ); - return crate::actor::model::Mission { + let mut var_files = >::sse_decode(deserializer); + let mut var_state = ::sse_decode(deserializer); + return crate::actor::mission::MissionInfo { id: var_id, sender: var_sender, - token_map: var_tokenMap, - reverse_token_map: var_reverseTokenMap, - info_map: var_infoMap, + files: var_files, + state: var_state, }; } } @@ -852,11 +843,13 @@ impl SseDecode for Option { } } -impl SseDecode for Option { +impl SseDecode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { if (::sse_decode(deserializer)) { - return Some(::sse_decode(deserializer)); + return Some(::sse_decode( + deserializer, + )); } else { return None; } @@ -874,90 +867,6 @@ impl SseDecode for Option> { } } -impl SseDecode for crate::actor::mission::pending::PendingMissionDto { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_mission = >::sse_decode(deserializer); - let mut var_state = ::sse_decode(deserializer); - return crate::actor::mission::pending::PendingMissionDto { - mission: var_mission, - state: var_state, - }; - } -} - -impl SseDecode for (String, crate::api::model::FileInfo) { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); - return (var_field0, var_field1); - } -} - -impl SseDecode for (String, String) { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); - return (var_field0, var_field1); - } -} - -impl SseDecode for crate::actor::mission::transfer::TransferFileInfo { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_info = ::sse_decode(deserializer); - let mut var_state = - ::sse_decode(deserializer); - return crate::actor::mission::transfer::TransferFileInfo { - info: var_info, - state: var_state, - }; - } -} - -impl SseDecode for crate::actor::mission::transfer::TransferMissionDto { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_state = ::sse_decode(deserializer); - let mut var_files = - >::sse_decode(deserializer); - return crate::actor::mission::transfer::TransferMissionDto { - state: var_state, - files: var_files, - }; - } -} - -impl SseDecode for crate::actor::mission::transfer::TransferState { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut tag_ = ::sse_decode(deserializer); - match tag_ { - 0 => { - return crate::actor::mission::transfer::TransferState::Pending; - } - 1 => { - return crate::actor::mission::transfer::TransferState::Transfer; - } - 2 => { - return crate::actor::mission::transfer::TransferState::Finish; - } - 3 => { - return crate::actor::mission::transfer::TransferState::Skip; - } - 4 => { - let mut var_msg = ::sse_decode(deserializer); - return crate::actor::mission::transfer::TransferState::Fail { msg: var_msg }; - } - _ => { - unimplemented!(""); - } - } - } -} - impl SseDecode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -993,16 +902,16 @@ fn pde_ffi_dispatcher_primary_impl( ) { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { - 1 => wire__crate__bridge__announce_impl(port, ptr, rust_vec_len, data_len), - 2 => wire__crate__bridge__cancel_pending_impl(port, ptr, rust_vec_len, data_len), - 3 => wire__crate__bridge__change_address_impl(port, ptr, rust_vec_len, data_len), - 4 => wire__crate__bridge__change_config_impl(port, ptr, rust_vec_len, data_len), - 5 => wire__crate__bridge__clear_pending_impl(port, ptr, rust_vec_len, data_len), - 6 => wire__crate__bridge__get_log_impl(port, ptr, rust_vec_len, data_len), - 7 => wire__crate__bridge__listen_device_impl(port, ptr, rust_vec_len, data_len), - 8 => wire__crate__bridge__listen_pending_mission_impl(port, ptr, rust_vec_len, data_len), - 9 => wire__crate__bridge__listen_server_state_impl(port, ptr, rust_vec_len, data_len), - 10 => wire__crate__bridge__listen_transfer_mission_impl(port, ptr, rust_vec_len, data_len), + 1 => wire__crate__bridge__accept_pending_impl(port, ptr, rust_vec_len, data_len), + 2 => wire__crate__bridge__announce_impl(port, ptr, rust_vec_len, data_len), + 3 => wire__crate__bridge__cancel_pending_impl(port, ptr, rust_vec_len, data_len), + 4 => wire__crate__bridge__change_address_impl(port, ptr, rust_vec_len, data_len), + 5 => wire__crate__bridge__change_config_impl(port, ptr, rust_vec_len, data_len), + 6 => wire__crate__bridge__clear_mission_impl(port, ptr, rust_vec_len, data_len), + 7 => wire__crate__bridge__create_log_stream_impl(port, ptr, rust_vec_len, data_len), + 8 => wire__crate__bridge__listen_device_impl(port, ptr, rust_vec_len, data_len), + 9 => wire__crate__bridge__listen_mission_impl(port, ptr, rust_vec_len, data_len), + 10 => wire__crate__bridge__listen_server_state_impl(port, ptr, rust_vec_len, data_len), 11 => wire__crate__bridge__setup_impl(port, ptr, rust_vec_len, data_len), 12 => wire__crate__bridge__shutdown_server_impl(port, ptr, rust_vec_len, data_len), 13 => wire__crate__bridge__start_server_impl(port, ptr, rust_vec_len, data_len), @@ -1062,6 +971,34 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::actor::mission::FileState { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + crate::actor::mission::FileState::Pending => [0.into_dart()].into_dart(), + crate::actor::mission::FileState::Transfer => [1.into_dart()].into_dart(), + crate::actor::mission::FileState::Finish => [2.into_dart()].into_dart(), + crate::actor::mission::FileState::Skip => [3.into_dart()].into_dart(), + crate::actor::mission::FileState::Fail { msg } => { + [4.into_dart(), msg.into_into_dart().into_dart()].into_dart() + } + _ => { + unimplemented!(""); + } + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::actor::mission::FileState +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::actor::mission::FileState +{ + fn into_into_dart(self) -> crate::actor::mission::FileState { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::logger::LogEntry { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -1080,23 +1017,46 @@ impl flutter_rust_bridge::IntoIntoDart for crate::logge } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::actor::model::Mission { +impl flutter_rust_bridge::IntoDart for crate::actor::mission::MissionFileInfo { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.info.into_into_dart().into_dart(), + self.state.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::actor::mission::MissionFileInfo +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::actor::mission::MissionFileInfo +{ + fn into_into_dart(self) -> crate::actor::mission::MissionFileInfo { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::actor::mission::MissionInfo { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ self.id.into_into_dart().into_dart(), self.sender.into_into_dart().into_dart(), - self.token_map.into_into_dart().into_dart(), - self.reverse_token_map.into_into_dart().into_dart(), - self.info_map.into_into_dart().into_dart(), + self.files.into_into_dart().into_dart(), + self.state.into_into_dart().into_dart(), ] .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::actor::model::Mission {} -impl flutter_rust_bridge::IntoIntoDart - for crate::actor::model::Mission +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::actor::mission::MissionInfo +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::actor::mission::MissionInfo { - fn into_into_dart(self) -> crate::actor::model::Mission { + fn into_into_dart(self) -> crate::actor::mission::MissionInfo { self } } @@ -1156,97 +1116,6 @@ impl flutter_rust_bridge::IntoIntoDart self } } -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::actor::mission::pending::PendingMissionDto { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.mission.into_into_dart().into_dart(), - self.state.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::actor::mission::pending::PendingMissionDto -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::actor::mission::pending::PendingMissionDto -{ - fn into_into_dart(self) -> crate::actor::mission::pending::PendingMissionDto { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::actor::mission::transfer::TransferFileInfo { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.info.into_into_dart().into_dart(), - self.state.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::actor::mission::transfer::TransferFileInfo -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::actor::mission::transfer::TransferFileInfo -{ - fn into_into_dart(self) -> crate::actor::mission::transfer::TransferFileInfo { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::actor::mission::transfer::TransferMissionDto { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.state.into_into_dart().into_dart(), - self.files.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::actor::mission::transfer::TransferMissionDto -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::actor::mission::transfer::TransferMissionDto -{ - fn into_into_dart(self) -> crate::actor::mission::transfer::TransferMissionDto { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::actor::mission::transfer::TransferState { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - match self { - crate::actor::mission::transfer::TransferState::Pending => [0.into_dart()].into_dart(), - crate::actor::mission::transfer::TransferState::Transfer => [1.into_dart()].into_dart(), - crate::actor::mission::transfer::TransferState::Finish => [2.into_dart()].into_dart(), - crate::actor::mission::transfer::TransferState::Skip => [3.into_dart()].into_dart(), - crate::actor::mission::transfer::TransferState::Fail { msg } => { - [4.into_dart(), msg.into_into_dart().into_dart()].into_dart() - } - _ => { - unimplemented!(""); - } - } - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::actor::mission::transfer::TransferState -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::actor::mission::transfer::TransferState -{ - fn into_into_dart(self) -> crate::actor::mission::transfer::TransferState { - self - } -} impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { // Codec=Sse (Serialization based), see doc to use other codecs @@ -1262,23 +1131,6 @@ impl SseEncode for CoreConfig { } } -impl SseEncode for std::collections::HashMap { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.into_iter().collect(), serializer); - } -} - -impl SseEncode for std::collections::HashMap { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode( - self.into_iter().collect(), - serializer, - ); - } -} - impl SseEncode for RustOpaqueMoi> { @@ -1310,10 +1162,7 @@ impl SseEncode } impl SseEncode - for StreamSink< - crate::actor::mission::pending::PendingMissionDto, - flutter_rust_bridge::for_generated::SseCodec, - > + for StreamSink { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1323,7 +1172,7 @@ impl SseEncode impl SseEncode for StreamSink< - crate::actor::mission::transfer::TransferMissionDto, + Option, flutter_rust_bridge::for_generated::SseCodec, > { @@ -1359,66 +1208,73 @@ impl SseEncode for crate::api::model::FileInfo { } } -impl SseEncode for i32 { +impl SseEncode for crate::actor::mission::FileState { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_i32::(self).unwrap(); - } -} - -impl SseEncode for i64 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_i64::(self).unwrap(); + match self { + crate::actor::mission::FileState::Pending => { + ::sse_encode(0, serializer); + } + crate::actor::mission::FileState::Transfer => { + ::sse_encode(1, serializer); + } + crate::actor::mission::FileState::Finish => { + ::sse_encode(2, serializer); + } + crate::actor::mission::FileState::Skip => { + ::sse_encode(3, serializer); + } + crate::actor::mission::FileState::Fail { msg } => { + ::sse_encode(4, serializer); + ::sse_encode(msg, serializer); + } + _ => { + unimplemented!(""); + } + } } } -impl SseEncode for Vec { +impl SseEncode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); - } + serializer.cursor.write_i32::(self).unwrap(); } } -impl SseEncode for Vec { +impl SseEncode for i64 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); - } + serializer.cursor.write_i64::(self).unwrap(); } } -impl SseEncode for Vec<(String, crate::api::model::FileInfo)> { +impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.len() as _, serializer); for item in self { - <(String, crate::api::model::FileInfo)>::sse_encode(item, serializer); + ::sse_encode(item, serializer); } } } -impl SseEncode for Vec<(String, String)> { +impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.len() as _, serializer); for item in self { - <(String, String)>::sse_encode(item, serializer); + ::sse_encode(item, serializer); } } } -impl SseEncode for Vec { +impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.len() as _, serializer); for item in self { - ::sse_encode(item, serializer); + ::sse_encode(item, serializer); } } } @@ -1433,17 +1289,21 @@ impl SseEncode for crate::logger::LogEntry { } } -impl SseEncode for crate::actor::model::Mission { +impl SseEncode for crate::actor::mission::MissionFileInfo { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.info, serializer); + ::sse_encode(self.state, serializer); + } +} + +impl SseEncode for crate::actor::mission::MissionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.id, serializer); ::sse_encode(self.sender, serializer); - >::sse_encode(self.token_map, serializer); - >::sse_encode(self.reverse_token_map, serializer); - >::sse_encode( - self.info_map, - serializer, - ); + >::sse_encode(self.files, serializer); + ::sse_encode(self.state, serializer); } } @@ -1495,12 +1355,12 @@ impl SseEncode for Option { } } -impl SseEncode for Option { +impl SseEncode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.is_some(), serializer); if let Some(value) = self { - ::sse_encode(value, serializer); + ::sse_encode(value, serializer); } } } @@ -1515,75 +1375,6 @@ impl SseEncode for Option> { } } -impl SseEncode for crate::actor::mission::pending::PendingMissionDto { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.mission, serializer); - ::sse_encode(self.state, serializer); - } -} - -impl SseEncode for (String, crate::api::model::FileInfo) { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - ::sse_encode(self.1, serializer); - } -} - -impl SseEncode for (String, String) { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - ::sse_encode(self.1, serializer); - } -} - -impl SseEncode for crate::actor::mission::transfer::TransferFileInfo { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.info, serializer); - ::sse_encode(self.state, serializer); - } -} - -impl SseEncode for crate::actor::mission::transfer::TransferMissionDto { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.state, serializer); - >::sse_encode( - self.files, serializer, - ); - } -} - -impl SseEncode for crate::actor::mission::transfer::TransferState { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - match self { - crate::actor::mission::transfer::TransferState::Pending => { - ::sse_encode(0, serializer); - } - crate::actor::mission::transfer::TransferState::Transfer => { - ::sse_encode(1, serializer); - } - crate::actor::mission::transfer::TransferState::Finish => { - ::sse_encode(2, serializer); - } - crate::actor::mission::transfer::TransferState::Skip => { - ::sse_encode(3, serializer); - } - crate::actor::mission::transfer::TransferState::Fail { msg } => { - ::sse_encode(4, serializer); - ::sse_encode(msg, serializer); - } - _ => { - unimplemented!(""); - } - } - } -} - impl SseEncode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1614,7 +1405,37 @@ impl SseEncode for usize { } #[cfg(not(target_family = "wasm"))] -#[path = "frb_generated.io.rs"] -mod io; +mod io { + // This file is automatically generated, so please do not edit it. + // Generated by `flutter_rust_bridge`@ 2.1.0. + + // Section: imports + + use super::*; + use crate::actor::core::*; + use flutter_rust_bridge::for_generated::byteorder::{ + NativeEndian, ReadBytesExt, WriteBytesExt, + }; + use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; + use flutter_rust_bridge::{Handler, IntoIntoDart}; + + // Section: boilerplate + + flutter_rust_bridge::frb_generated_boilerplate_io!(); + + #[no_mangle] + pub extern "C" fn frbgen_localsend_rs_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_localsend_rs_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerCoreConfig( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } +} #[cfg(not(target_family = "wasm"))] pub use io::*; diff --git a/rust/src/logger.rs b/rust/src/logger.rs index f67545e..4e8998f 100644 --- a/rust/src/logger.rs +++ b/rust/src/logger.rs @@ -38,7 +38,7 @@ pub fn init_logger(is_debug: bool) { // #[cfg(not(any(target_os = "android", target_os = "ios")))] TermLogger::new( level, - ConfigBuilder::new().build(), + ConfigBuilder::new().add_filter_ignore_str("ureq").build(), TerminalMode::Mixed, ColorChoice::Auto, ), @@ -47,11 +47,6 @@ pub fn init_logger(is_debug: bool) { error!("init_logger (inside 'once') has error: {:?}", e); }); info!("init_logger (inside 'once') finished"); - - warn!( - "init_logger finished, chosen level={:?} (deliberately output by warn level)", - level - ); }); } diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 48de52b..8b6d468 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,9 +6,6 @@ #include "generated_plugin_registrant.h" -#include void RegisterPlugins(flutter::PluginRegistry* registry) { - PermissionHandlerWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 668e35c..7f4127b 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,7 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - permission_handler_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST