package com.dji.sdk.mqtt.drc;
|
|
import com.dji.sdk.common.Common;
|
import com.dji.sdk.mqtt.MqttGatewayPublish;
|
import com.dji.sdk.mqtt.TopicConst;
|
import com.dji.sdk.mqtt.services.ServicesReplyData;
|
import com.dji.sdk.mqtt.services.ServicesReplyReceiver;
|
import com.dji.sdk.mqtt.services.TopicServicesRequest;
|
import com.dji.sdk.mqtt.services.TopicServicesResponse;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.Objects;
|
import java.util.UUID;
|
|
/**
|
* @author sean
|
* @version 1.7
|
* @date 2023/5/24
|
*/
|
@Component
|
public class DrcDownPublish {
|
|
@Resource
|
private MqttGatewayPublish gatewayPublish;
|
|
public static final int DEFAULT_PUBLISH_COUNT = 1;
|
public void publish(String sn, String method) {
|
this.publish(sn, method, null);
|
}
|
|
public void publish(String sn, String method, Object data) {
|
this.publish(sn, method, data, DEFAULT_PUBLISH_COUNT);
|
}
|
|
public void publish(String sn, String method, Object data, int publishCount) {
|
String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
|
gatewayPublish.publish(topic,
|
new TopicDrcRequest<>()
|
.setMethod(method)
|
.setData(Objects.requireNonNullElse(data, "")),
|
publishCount);
|
}
|
// public void publish(String sn, String method) {
|
// this.publish(sn, method, null);
|
// }
|
//
|
// public void publish(String sn, String method, Object data) {
|
// this.publish(sn, method, data, DEFAULT_PUBLISH_COUNT);
|
// }
|
//
|
// public void publish(String sn, String method, Object data, int publishCount) {
|
// String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
|
// gatewayPublish.publish(topic,
|
// new TopicDrcRequest<>()
|
// .setMethod(method)
|
// .setData(Objects.requireNonNullElse(data, "")),
|
// publishCount);
|
//
|
// }
|
|
// public <T> TopicDrcResponse<T> publish(TypeReference<T> clazz, String sn, String method, Object data, String bid, int retryCount, long timeout) {
|
// retryCount =DEFAULT_PUBLISH_COUNT;
|
// timeout=MqttGatewayPublish.DEFAULT_RETRY_TIMEOUT;
|
// String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
|
// TopicDrcResponse response = (TopicDrcResponse) gatewayPublish.publishWithReply(
|
// DrcReplyReceiver.class, topic, new TopicDrcResponse<>()
|
// .setTid(UUID.randomUUID().toString())
|
// .setBid(bid)
|
// .setTimestamp(System.currentTimeMillis())
|
// .setMethod(method)
|
// .setData(Objects.requireNonNullElse(data, "")), retryCount, timeout);
|
// ServicesReplyReceiver replyReceiver = (ServicesReplyReceiver) response.getData();
|
// ServicesReplyData<T> reply = new ServicesReplyData<T>().setResult(replyReceiver.getResult());
|
// if (Objects.isNull(clazz)) {
|
// reply.setOutput((T) Objects.requireNonNullElse(
|
// replyReceiver.getOutput(), Objects.requireNonNullElse(replyReceiver.getInfo(), "")));
|
// return response.setData(reply);
|
// }
|
// // put together in "output"
|
// ObjectMapper mapper = Common.getObjectMapper();
|
// if (Objects.nonNull(replyReceiver.getInfo())) {
|
// reply.setOutput(mapper.convertValue(replyReceiver.getInfo(), clazz));
|
// }
|
// if (Objects.nonNull(replyReceiver.getOutput())) {
|
// reply.setOutput(mapper.convertValue(replyReceiver.getOutput(), clazz));
|
// }
|
// return response.setData(reply);
|
// }
|
|
}
|