From 881519bc1efeb83701e0ca44d026385db3d8509a Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期一, 18 九月 2023 13:27:44 +0800
Subject: [PATCH] 增加全局处理方法

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java      |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java        |   16 -----
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java   |   67 +++++++++++++++++++++-
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java |   66 ---------------------
 4 files changed, 67 insertions(+), 84 deletions(-)

diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
index 398429a..99db1bb 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -1,15 +1,23 @@
 package com.hdl.sdk.common.utils;
 
 import android.text.TextUtils;
+import android.util.Base64;
+import android.util.Log;
 
 import com.google.gson.reflect.TypeToken;
 import com.hdl.sdk.common.config.TopicConstant;
+import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
+import com.hdl.sdk.connect.HDLLink;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.GatewayRemoteEditRequest;
+import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse;
 import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
+import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
+import com.hdl.sdk.connect.socket.HDLAuthSocket;
 import com.hdl.sdk.connect.socket.HDLSocket;
+import com.hdl.sdk.connect.utils.AesUtil;
 
 import java.time.chrono.IsoChronology;
 
@@ -25,6 +33,9 @@
      */
     public static void manager(LinkResponse linkResponse) {
         try {
+            if(linkResponse==null){
+                return;
+            }
             String topic = linkResponse.getTopic();
             if (TextUtils.isEmpty(topic)) {
                 return;
@@ -46,8 +57,57 @@
             if(isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE,topic)){
                 gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData());
             }
+            else if(isSameTopic(TopicConstant.GATEWAY_SEARCH,topic)){
+                HDLAuthSocket.getInstance().UploadGatewayInfo(null);
+            }
+            else if(isSameTopic(TopicConstant.LINK_BROADCAST,topic)){
+                try {
+                    DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<DeviceInfoResponse>() {
+                    }.getType());
 
-            //TODO 閫氳繃澧炲姞if else 澧炲姞鍏跺畠涓婚绫讳技杩欐牱浣跨敤
+                    if(deviceInfoResponse==null||deviceInfoResponse.getObjects()==null){
+                        return;
+                    }
+                    if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
+                        byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
+                        String mackey = "";
+                        if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
+                            mackey = SPUtils.getString("auth_mackey_key", "");
+                            byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16));
+                            String localSecret = new String(bodyBytes, "utf-8");
+                            Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret);
+                            HDLLinkConfig.getInstance().setLocalSecret(localSecret);
+                        }
+                    }
+                } catch (Exception e) {
+                    LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
+                }
+            }
+            else if(isSameTopic(TopicConstant.DELETE_NOTIFY,topic)){
+                try {
+                    DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<DeviceDeleteResponse>() {
+                    }.getType());
+                    HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
+                        @Override
+                        public void onSuccess(String msg) {
+                            LogUtils.i("deleteNetwork onSucceed");
+                            if (HDLLink.getInstance().listener != null) {
+                                HDLLink.getInstance().listener.onSuccess(msg);
+                            }
+                        }
+
+                        @Override
+                        public void onError(HDLLinkException e) {
+                            LogUtils.i("deleteNetwork onError");
+                            if (HDLLink.getInstance().listener != null) {
+                                HDLLink.getInstance().listener.onFailure();
+                            }
+                        }
+                    });
+                } catch (Exception e) {
+                    LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
+                }
+            }
 
         } catch (Exception e) {
             LogUtils.e("鍏ㄥ眬澶勭悊妯″潡寮傚父锛�" + e.getMessage());
@@ -64,10 +124,11 @@
             return false;
         }
         String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC();
-        String oid = "123";//HDLLinkConfig.getInstance().getDeviceInfoBean().getOID();
+        String oid = HDLLinkConfig.getInstance().getDeviceInfoBean().getOID();
         String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
+        String all="all";
 
-        return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId);
+        return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId)||mac_Oid_GatewayId.toLowerCase().equals(all);
     }
 
     /**
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
index 71438aa..4c15135 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -196,71 +196,7 @@
                 String bodyString = new String(body, "utf-8");
                 response.setData(bodyString);
                 LogUtils.i("鎺ユ敹鍒版暟鎹�:" + response.getTopic() + "\r\n" + response.getData());
-
-                String updateLocalSecret = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId());
-                String deleteNetwork = "";
-                if (HDLLinkConfig.getInstance().getDeviceInfoBean() != null) {
-                    deleteNetwork = String.format(TopicConstant.DELETE_NOTIFY, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
-                }
-
-                if (response.getTopic().equals("/user/all/custom/gateway/search")) {
-                    HDLAuthSocket.getInstance().UploadGatewayInfo(new HDLLinkCallBack() {
-                        @Override
-                        public void onSuccess(String msg) {
-                            LogUtils.i("UploadGatewayInfo onSucceed");
-                        }
-
-                        @Override
-                        public void onError(HDLLinkException e) {
-                            LogUtils.i("UploadGatewayInfo onError");
-                        }
-                    });
-                }
-                else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) {
-                    try {
-                        DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() {
-                        }.getType());
-
-                        if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
-                            byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
-                            String mackey = "";
-                            if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
-                                mackey = SPUtils.getString("auth_mackey_key", "");
-                                byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16));
-                                String localSecret = new String(bodyBytes, "utf-8");
-                                Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret);
-                                HDLLinkConfig.getInstance().setLocalSecret(localSecret);
-                            }
-                        }
-                    } catch (Exception e) {
-                        LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
-                    }
-                } else if (response.getTopic().equals(deleteNetwork)) {
-                    try {
-                        DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() {
-                        }.getType());
-                        HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
-                            @Override
-                            public void onSuccess(String msg) {
-                                LogUtils.i("deleteNetwork onSucceed");
-                                if (HDLLink.getInstance().listener != null) {
-                                    HDLLink.getInstance().listener.onSuccess(msg);
-                                }
-                            }
-
-                            @Override
-                            public void onError(HDLLinkException e) {
-                                LogUtils.i("deleteNetwork onError");
-                                if (HDLLink.getInstance().listener != null) {
-                                    HDLLink.getInstance().listener.onFailure();
-                                }
-                            }
-                        });
-                    } catch (Exception e) {
-                        LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
-                    }
-                }
-
+                
                 //闈炴甯告暟鎹紝杩斿洖
                 if (!((bodyString.startsWith("{") && bodyString.endsWith("}"))
                         || (bodyString.startsWith("[") && bodyString.endsWith("]")))) {
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
index bd4045c..6a3b624 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -224,21 +224,7 @@
                 GsonConvert.getGson().toJson(data));
 
         String ip = IpUtils.getBroadcastAddress();
-        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, new HdlSocketHelper.HdlSocketListener() {
-            @Override
-            public void onSucceed(Object msg) {
-                if (callBack == null) return;
-                callBack.onSuccess("涓婃姤鎴愬姛");
-                LogUtils.i("UploadGatewayInfo onSucceed = " + msg);
-            }
-
-            @Override
-            public void onFailure() {
-                if (callBack == null) return;
-                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UPLOAD_GATEWAYINFO_FAILURE_ERROR));
-                LogUtils.i("UploadGatewayInfo onFailure");
-            }
-        });
+        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, null);
 
     }
 
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
index abac95d..58fd289 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -91,7 +91,7 @@
      * 娉ㄥ唽鐩戝惉
      */
     void registerListener() {
-        if (!TextUtils.isEmpty(observeTopic)) {
+        if (listener != null && !TextUtils.isEmpty(observeTopic)) {
             EventDispatcher.getInstance().register(observeTopic, eventListener);
 //            LogUtils.i("HdlSocketHelper", "register event");
         }

--
Gitblit v1.8.0