From 23693f47a4519ac647fc92a5456a9ef7042c0e03 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Tue, 19 Mar 2024 15:29:11 +0100 Subject: [PATCH] Erweiterungen --- lib/protocoll_messages/job_del_message.dart | 2 +- lib/protocoll_messages/job_del_message.g.dart | 5 +- lib/tools/messages/job_deleted_message.dart | 4 +- lib/tools/mqtt_core.dart | 84 +++++++++---------- 4 files changed, 47 insertions(+), 48 deletions(-) diff --git a/lib/protocoll_messages/job_del_message.dart b/lib/protocoll_messages/job_del_message.dart index 619b4d9..38c6a42 100644 --- a/lib/protocoll_messages/job_del_message.dart +++ b/lib/protocoll_messages/job_del_message.dart @@ -4,7 +4,7 @@ part 'job_del_message.g.dart'; @JsonSerializable() class JobDelMessage { - late List jobs; + late int id; JobDelMessage(); diff --git a/lib/protocoll_messages/job_del_message.g.dart b/lib/protocoll_messages/job_del_message.g.dart index 9199dea..82132a9 100644 --- a/lib/protocoll_messages/job_del_message.g.dart +++ b/lib/protocoll_messages/job_del_message.g.dart @@ -7,10 +7,9 @@ part of 'job_del_message.dart'; // ************************************************************************** JobDelMessage _$JobDelMessageFromJson(Map json) => - JobDelMessage() - ..jobs = (json['jobs'] as List).map((e) => e as int).toList(); + JobDelMessage()..id = json['id'] as int; Map _$JobDelMessageToJson(JobDelMessage instance) => { - 'jobs': instance.jobs, + 'id': instance.id, }; diff --git a/lib/tools/messages/job_deleted_message.dart b/lib/tools/messages/job_deleted_message.dart index 1b0371e..2f0408b 100644 --- a/lib/tools/messages/job_deleted_message.dart +++ b/lib/tools/messages/job_deleted_message.dart @@ -1,6 +1,6 @@ class JobDeletedMessage { - final int jobId; + final int id; - JobDeletedMessage({required this.jobId}); + JobDeletedMessage({required this.id}); } \ No newline at end of file diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 207e28b..b4cf506 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -2,8 +2,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:math'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/services.dart'; import 'package:isar/isar.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; @@ -148,51 +146,55 @@ class MqttCore { void _setupSubscriptions() async { Util.logInfo('_setupSubscriptions called'); - _mqttClient.updates?.listen((List> c) { + _mqttClient.updates?.listen((List> messages) { try { - final MqttPublishMessage message = c[0].payload as MqttPublishMessage; - String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits); - var topic = message.variableHeader?.topicName; + for (var mqttMessage in messages) { + final MqttPublishMessage message = mqttMessage.payload as MqttPublishMessage; + String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits); + var topic = message.variableHeader?.topicName; - Util.logInfo('message received'); - Util.logInfo('topic: $topic'); - Util.logInfo('mesage: $payload'); + if (topic!.endsWith(_clientId)) { + Util.logInfo('message received'); + Util.logInfo('topic: $topic'); + Util.logInfo('mesage: $payload'); - var topicArray = topic!.split('/'); - var messageType = topicArray[3]; + var topicArray = topic.split('/'); + var messageType = topicArray[3]; - switch(messageType) { - case 'session': - _sessionMessageReceived(jsonDecode(payload)); - break; + switch(messageType) { + case 'session': + _sessionMessageReceived(jsonDecode(payload)); + break; - case 'status': - _statusMessageReceived(jsonDecode(payload)); - break; + case 'status': + _statusMessageReceived(jsonDecode(payload)); + break; - case 'ranking': - _rankingMessageReceived(jsonDecode(payload)); - break; + case 'ranking': + _rankingMessageReceived(jsonDecode(payload)); + break; - case 'job': - _jobMessageReceived(jsonDecode(payload)); - break; + case 'job': + _jobMessageReceived(jsonDecode(payload)); + break; - case 'job_del': - _jobDeleteReceived(jsonDecode(payload)); - break; + case 'job_del': + _jobDeleteReceived(jsonDecode(payload)); + break; - case 'sync_request': - _syncRequestReceived(jsonDecode(payload)); - break; + case 'sync_request': + _syncRequestReceived(jsonDecode(payload)); + break; - case "mssg": - _messageMessageReceived(payload); - break; + case "mssg": + _messageMessageReceived(payload); + break; - default: - Util.logInfo('Unknown topic: $messageType'); - break; + default: + Util.logInfo('Unknown topic: $messageType'); + break; + } + } } } catch(ex) { Util.logException(ex.toString()); @@ -268,13 +270,11 @@ class MqttCore { void _jobDeleteReceived(payloadData) async { var jobDelMessage = JobDelMessage.fromJson(payloadData); - for(var jobId in jobDelMessage.jobs) { - await MyApp.isarInstance.writeTxn(() async { - await MyApp.isarInstance.jobs.delete(jobId); - }); + await MyApp.isarInstance.writeTxn(() async { + await MyApp.isarInstance.jobs.delete(jobDelMessage.id); + }); - MessageService().publish(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(jobId: jobId)); - } + MessageService().publish(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobDelMessage.id)); } void _syncRequestReceived(payloadData) async {