fix:调整udp返回数据为工厂模式处理

This commit is contained in:
liyi 2024-12-04 15:00:56 +08:00
parent 857f9fad2a
commit 9847b572b3
15 changed files with 256 additions and 2 deletions

View File

@ -84,7 +84,7 @@ class MessageCommand {
iD: gatewayId,
time: time,
);
//
//
final payload = gatewayResetReq.writeToBuffer();
ScpMessage message = ScpMessage(
ProtocolFlag: ProtocolFlagConstant.scp01,

View File

@ -0,0 +1,19 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/ble_message.pbserver.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpBlePassThroughHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final BleResp bleResp = scpMessage.Payload;
//
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpGateWayTransferHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/ble_message.pbserver.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import 'package:star_lock/talk/startChart/proto/remote_unlock.pb.dart';
import '../../start_chart_manage.dart';
class UdpRemoteUnLockHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final RemoteUnlockReq remoteUnlockReq = scpMessage.Payload;
//
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkAcceptHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkDataHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkExpectHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkHangUpHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkPingHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkPushHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkReceiverTransferHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
class UdpTalkRejectHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
}

View File

@ -6,6 +6,6 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
class UnKnowPayloadTypeHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
AppLog.log('❌未知的payloadType类型');
AppLog.log('❌未知的payloadType类型---》${scpMessage}');
}
}

View File

@ -1,13 +1,25 @@
import 'package:star_lock/talk/startChart/constant/payload_type_constant.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_call_request_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_echo_test_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_reset_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_go_online_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_heart_beat_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_accept_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_data_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_expect_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_hangup_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_ping_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_push_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_reject_handler.dart';
import 'package:star_lock/talk/startChart/handle/impl/unknow_payload_type_handler.dart';
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
class ScpMessageHandlerFactory {
///
static ScpMessageHandler createHandler(int payloadType) {
switch (payloadType) {
case PayloadTypeConstant.goOnline:
@ -18,8 +30,30 @@ class ScpMessageHandlerFactory {
return UdpEchoTestHandler();
case PayloadTypeConstant.gatewayReset:
return UdpGateWayResetHandler();
case PayloadTypeConstant.gatewayTransfer:
return UdpGateWayTransferHandler();
case PayloadTypeConstant.blePassthrough:
return UdpBlePassThroughHandler();
case PayloadTypeConstant.remoteUnlock:
return UdpRemoteUnLockHandler();
case PayloadTypeConstant.talkReceiverTransfer:
return UdpTalkReceiverTransferHandler();
case PayloadTypeConstant.callRequest:
return UdpCallRequestHandler();
case PayloadTypeConstant.talkPush:
return UdpTalkPushHandler();
case PayloadTypeConstant.talkReject:
return UdpTalkRejectHandler();
case PayloadTypeConstant.talkAccept:
return UdpTalkAcceptHandler();
case PayloadTypeConstant.talkPing:
return UdpTalkPingHandler();
case PayloadTypeConstant.talkExpect:
return UdpTalkExpectHandler();
case PayloadTypeConstant.talkData:
return UdpTalkDataHandler();
case PayloadTypeConstant.talkHangup:
return UdpTalkHangUpHandler();
default:
return UnKnowPayloadTypeHandler();
}

View File

@ -566,6 +566,7 @@ class StartChartManage {
if (dg?.data != null) {
final deserialize = ScpMessage.deserialize(dg!.data);
if (deserialize != null) {
//
_handleUdpResultData(deserialize);
}
if (deserialize.PayloadType != PayloadTypeConstant.heartbeat) {