package com.dji.sdk.mqtt.services; import com.dji.sdk.cloudapi.log.FileUploadListResponse; import com.dji.sdk.cloudapi.log.LogMethodEnum; import com.dji.sdk.common.Common; import com.dji.sdk.mqtt.Chan; import com.dji.sdk.mqtt.ChannelName; import com.fasterxml.jackson.core.type.TypeReference; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.Objects; /** * @author sean * @version 1.2 * @date 2022/9/9 */ @Component public class ServicesReplyHandler { /** * Handle the reply message from topic "/services_reply". * @param message reply message * @throws IOException */ @ServiceActivator(inputChannel = ChannelName.INBOUND_SERVICES_REPLY) public void servicesReply(Message message) throws IOException { byte[] payload = (byte[])message.getPayload(); TopicServicesResponse receiver = Common.getObjectMapper() .readValue(payload, new TypeReference>() {}); Chan chan = Chan.getInstance(receiver.getTid(), false); if (Objects.isNull(chan)) { return; } if (LogMethodEnum.FILE_UPLOAD_LIST.getMethod().equals(receiver.getMethod())) { receiver.getData().setOutput(Common.getObjectMapper().convertValue(receiver.getData(), new TypeReference() {})); } chan.put(receiver); } }