fix:增加不同消息类型的对应处理方法

This commit is contained in:
liyi 2024-12-09 09:22:58 +08:00
parent 13fefa0495
commit 4e0fdd6f29
19 changed files with 367 additions and 58 deletions

View File

@ -11,9 +11,26 @@ 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) {
void handleReq(ScpMessage scpMessage) {
final BleResp bleResp = scpMessage.Payload;
//
//TODO
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -7,8 +7,26 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import '../../start_chart_manage.dart';
class UdpEchoTestHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
EasyLoading.showToast(scpMessage.Payload, duration: 2000.milliseconds);
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -8,12 +8,30 @@ import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
import '../../start_chart_manage.dart';
class UdpGateWayResetHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
final GatewayResetResp gatewayResetResp = scpMessage.Payload;
final status = gatewayResetResp.status;
if (status != null && status == GatewayResetResp_StatusE.OK) {
// TODO
}
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,11 +10,29 @@ import '../../start_chart_manage.dart';
class UdpGateWayTransferHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -9,7 +9,13 @@ import '../../start_chart_manage.dart';
class UdpGoOnlineHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO: 线
}
@override
void handleResp(ScpMessage scpMessage) {
// 线
final LoginResponse loginResponse = scpMessage.Payload;
final responseType = loginResponse.responseType;
if (responseType != null &&
@ -23,4 +29,14 @@ class UdpGoOnlineHandler extends ScpMessageBaseHandle
startChartManage.reStartOnlineStartChartServer();
}
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -8,8 +8,16 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import '../../start_chart_manage.dart';
class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
final HeartbeatResponse heartbeatResponse = scpMessage.Payload;
final statusCode = heartbeatResponse.statusCode;
if (statusCode != null &&
@ -22,4 +30,14 @@ class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHand
//
startChartManage.reStartHeartBeat();
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -12,9 +12,24 @@ 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;
//
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,8 +10,16 @@ import '../../start_chart_manage.dart';
class UdpTalkAcceptHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
//
@ -38,4 +46,15 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
});
}
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage
) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,9 +10,26 @@ import '../../start_chart_manage.dart';
class UdpTalkDataHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
print('收到音视频数据');
@override
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
print('收到音视频数据');
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,9 +10,25 @@ import '../../start_chart_manage.dart';
class UdpTalkExpectHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
print('收到预期音视频数据请求');
@override
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,11 +10,26 @@ 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
}
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage
) {
// TODO: implement handleRealTimeData
}
}

View File

@ -6,8 +6,15 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
class UdpTalkPingHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
//
@ -17,4 +24,14 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
}
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,11 +10,27 @@ import '../../start_chart_manage.dart';
class UdpTalkPushHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handleReq(ScpMessage scpMessage) {
// TODO:
final GenericResp genericResp = scpMessage.Payload;
if (checkGenericRespSuccess(genericResp)) {
// TODO
}
if (checkGenericRespSuccess(genericResp)) {}
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage
) {
// TODO: implement handleRealTimeData
}
}

View File

@ -10,11 +10,25 @@ 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
}
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -14,4 +14,24 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
void handle(ScpMessage scpMessage) {
print('收到接听拒绝');
}
@override
void handleReq(ScpMessage scpMessage) {
// TODO:
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -15,26 +15,7 @@ import '../../start_chart_manage.dart';
class UdpTalkRequestHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
if (scpMessage.MessageType == MessageTypeConstant.Req) {
print('收到对讲请求:${scpMessage}');
final TalkReq talkReq = scpMessage.Payload;
//
startChartManage.sendGenericRespSuccessMessage(
ToPeerId: scpMessage.FromPeerId!,
FromPeerId: scpMessage.ToPeerId!,
PayloadType: scpMessage.PayloadType!,
);
//
_talkRequestEvent();
} else if (scpMessage.MessageType == MessageTypeConstant.Resp) {
final GenericResp genericResp = scpMessage.Payload;
if (genericResp.code == 0) {
print('发送对讲成功');
}
}
}
//
void _talkRequestEvent() {
@ -66,4 +47,38 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
'${'收到来自'.tr}($getLockName)${'锁的呼叫'.tr}', platformChannelSpecifics,
payload: 'item x');
}
@override
void handleReq(ScpMessage scpMessage) {
//
print('收到对讲请求:${scpMessage}');
final TalkReq talkReq = scpMessage.Payload;
//
startChartManage.sendGenericRespSuccessMessage(
ToPeerId: scpMessage.FromPeerId!,
FromPeerId: scpMessage.ToPeerId!,
PayloadType: scpMessage.PayloadType!,
);
//
_talkRequestEvent();
}
@override
void handleResp(ScpMessage scpMessage) {
//
final GenericResp genericResp = scpMessage.Payload;
if (genericResp.code == 0) {
print('发送对讲成功');
}
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
// TODO: implement handleInvalidReq
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -3,9 +3,28 @@ 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';
class UnKnowPayloadTypeHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
class UnKnowPayloadTypeHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handle(ScpMessage scpMessage) {
void handle(ScpMessage scpMessage) {}
@override
void handleReq(ScpMessage scpMessage) {
AppLog.log('❌未知的payloadType类型---》${scpMessage}');
}
@override
void handleResp(ScpMessage scpMessage) {
AppLog.log('❌未知的payloadType类型---》${scpMessage}');
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
AppLog.log('❌未知的payloadType类型---》${scpMessage}');
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
AppLog.log('❌未知的payloadType类型---》${scpMessage}');
}
}

View File

@ -1,5 +1,15 @@
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
abstract class ScpMessageHandler {
void handle(ScpMessage scpMessage);
}
//
void handleReq(ScpMessage scpMessage);
//
void handleResp(ScpMessage scpMessage);
//
void handleRealTimeData(ScpMessage scpMessage);
//
void handleInvalidReq(ScpMessage scpMessage);
}

View File

@ -12,6 +12,7 @@ import 'package:star_lock/network/start_chart_api.dart';
import 'package:star_lock/talk/startChart/command/message_command.dart';
import 'package:star_lock/talk/startChart/constant/ip_constant.dart';
import 'package:star_lock/talk/startChart/constant/listen_addr_type_constant.dart';
import 'package:star_lock/talk/startChart/constant/message_type_constant.dart';
import 'package:star_lock/talk/startChart/constant/payload_type_constant.dart';
import 'package:star_lock/talk/startChart/entity/relay_info_entity.dart';
import 'package:star_lock/talk/startChart/entity/report_information_data.dart';
@ -182,6 +183,7 @@ class StartChartManage {
);
await _sendMessage(message: message);
}
//
Future<void> sendCallRequestMessage({required String ToPeerId}) async {
// 线
@ -666,10 +668,19 @@ class StartChartManage {
// udp返回的数据
void _handleUdpResultData(ScpMessage scpMessage) {
final int payloadType = scpMessage.PayloadType ?? 0;
final int messageType = scpMessage.MessageType ?? 0;
try {
final ScpMessageHandler handler =
ScpMessageHandlerFactory.createHandler(payloadType);
handler.handle(scpMessage);
if (messageType == MessageTypeConstant.Req) {
handler.handleReq(scpMessage);
} else if (messageType == MessageTypeConstant.Resp) {
handler.handleResp(scpMessage);
} else if (messageType == MessageTypeConstant.RealTimeData) {
handler.handleRealTimeData(scpMessage);
} else {
handler.handleInvalidReq(scpMessage);
}
} catch (e) {
_log(text: '❌ 处理udp返回数据时遇到错误---> $e');
}