import 'package:star_lock/login/selectCountryRegion/common/index.dart'; import 'package:star_lock/talk/starChart/constant/message_type_constant.dart'; import 'package:star_lock/talk/starChart/entity/scp_message.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_base_handle.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_handle.dart'; import 'package:star_lock/talk/starChart/proto/generic.pb.dart'; import 'package:star_lock/talk/starChart/proto/rbcu.pb.dart'; import 'package:star_lock/talk/starChart/proto/talk_request.pb.dart'; class UdpRbcuInfoHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override deserializePayload( {required int payloadType, required int messageType, required List byte, int? offset, int? PayloadLength, int? spTotal, int? spIndex, int? messageId}) { if (messageType == MessageTypeConstant.Resp) { final GenericResp genericResp = GenericResp(); genericResp.mergeFromBuffer(byte); return genericResp; } else if (messageType == MessageTypeConstant.Req) { final RbcuInfo rbcuInfo = RbcuInfo(); rbcuInfo.mergeFromBuffer(byte); return rbcuInfo; } else { String payload = utf8.decode(byte); return payload; } } @override void handleInvalidReq(ScpMessage scpMessage) { // TODO: implement handleInvalidReq } @override void handleRealTimeData(ScpMessage scpMessage) { // TODO: implement handleRealTimeData } @override void handleReq(ScpMessage scpMessage) { final RbcuInfo rbcuInfo = scpMessage.Payload; if (rbcuInfo.isResp) { // 如果是回复的消息 _handleResultRbcuInfo(rbcuInfo); } else { // 回复 startChartManage.replyRbcuInfoMessage(ToPeerId: scpMessage.FromPeerId!); } replySuccessMessage(scpMessage); } @override void handleResp(ScpMessage scpMessage) { final RbcuInfo rbcuInfo = scpMessage.Payload; final GenericResp genericResp = scpMessage.Payload; if (checkGenericRespSuccess(genericResp)) { // 收到回复之后停止重发 startChartManage.stopSendingRbcuInfoMessages(); if (rbcuInfo.isResp) { // 如果是回复的消息 _handleResultRbcuInfo(rbcuInfo); } } } /// 处理回复的rbcuInfo消息 void _handleResultRbcuInfo(RbcuInfo rbcuInfo) { startChartManage.rbcuInfo = rbcuInfo; startChartManage.stopSendingRbcuInfoMessages(); startChartManage.startSendingRbcuProbeTMessages(); } }