From 9d9d0cf21b285fa2790fb414d78a63c1a3baeab6 Mon Sep 17 00:00:00 2001
From: Vincent <fswit@163.com>
Date: Mon, 9 Oct 2023 16:46:21 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20PropertySetPublish=20=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?CompletableFuture=E6=94=AF=E6=8C=81=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../sdk/mqtt/property/PropertySetPublish.java | 34 ++++++++++++++++---
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/dji/sdk/mqtt/property/PropertySetPublish.java b/src/main/java/com/dji/sdk/mqtt/property/PropertySetPublish.java
index 3426a85..2927c8b 100644
--- a/src/main/java/com/dji/sdk/mqtt/property/PropertySetPublish.java
+++ b/src/main/java/com/dji/sdk/mqtt/property/PropertySetPublish.java
@@ -1,5 +1,8 @@
 package com.dji.sdk.mqtt.property;
 
+import com.dji.sdk.common.PublishOption;
+import com.dji.sdk.mqtt.CommonTopicRequest;
+import com.dji.sdk.mqtt.CommonTopicResponse;
 import com.dji.sdk.mqtt.MqttGatewayPublish;
 import com.dji.sdk.mqtt.TopicConst;
 import org.springframework.stereotype.Component;
@@ -7,6 +10,8 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import java.util.Objects;
 import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * @author sean
@@ -29,12 +34,33 @@ public class PropertySetPublish {
 
     public PropertySetReplyResultEnum publish(String sn, Object data, int retryCount, long timeout) {
         String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.PROPERTY_SUF + TopicConst.SET_SUF;
+
+        return gatewayPublish.publishWithReply(PropertySetReplyResultEnum.class,topic,
+                new CommonTopicRequest<>()
+                        .setTimestamp(System.currentTimeMillis())
+                        .setData(Objects.requireNonNull(data)),
+                ops->ops.timeout((int)(timeout/1000)))
+                .join()
+                .getData();
+
+//        return gatewayPublish.publishWithReply(
+//                PropertySetReplyResultEnum.class, topic, new TopicPropertySetRequest<>()
+//                        .setTid(UUID.randomUUID().toString())
+//                        .setBid(null)
+//                        .setTimestamp(System.currentTimeMillis())
+//                        .setData(Objects.requireNonNull(data)), retryCount, timeout).getData();
+    }
+
+    public CompletableFuture<CommonTopicResponse<PropertySetReplyResultEnum>>
+    publish(String sn, Object data, Consumer<PublishOption> options){
+        String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.PROPERTY_SUF + TopicConst.SET_SUF;
         return gatewayPublish.publishWithReply(
-                PropertySetReplyResultEnum.class, topic, new TopicPropertySetRequest<>()
-                        .setTid(UUID.randomUUID().toString())
-                        .setBid(null)
+                PropertySetReplyResultEnum.class,
+                topic,
+                new CommonTopicRequest<>()
                         .setTimestamp(System.currentTimeMillis())
-                        .setData(Objects.requireNonNull(data)), retryCount, timeout).getData();
+                        .setData(Objects.requireNonNull(data)),
+                options);
     }
 
 }