import 'dart:typed_data'; import 'package:star_lock/talk/startChart/constant/payload_type_constant.dart'; import 'package:star_lock/talk/startChart/entity/login_response.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 '../../start_chart_manage.dart'; class UdpGoOnlineHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handleReq(ScpMessage scpMessage) { // TODO: 收到上线消息请求 } @override void handleResp(ScpMessage scpMessage) { // 收到上线消息回复 final LoginResponse loginResponse = scpMessage.Payload; final responseType = loginResponse.responseType; if (responseType != null && responseType == PayloadTypeConstant.loginSuccessResponse) { startChartManage.isOnlineStartChartServer = true; // 上线成功,停止重发 startChartManage.stopReStartOnlineStartChartServer(); log(text: '星图登录成功'); } else { // 上线失败,重发 startChartManage.reStartOnlineStartChartServer(); } } @override void handleInvalidReq(ScpMessage scpMessage) {} @override void handleRealTimeData(ScpMessage scpMessage) {} @override deserializePayload( {required int payloadType, required int messageType, required Uint8List byte, int? offset, int? PayloadLength, int? spTotal, int? spIndex, int? messageId}) { // 上线 LoginResponse loginResp = LoginResponse.fromBytes(byte); return loginResp; } }