From b1569b789eef12cf5d4252620ca7e7d2d9c8b93a Mon Sep 17 00:00:00 2001 From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com> Date: 星期四, 14 十一月 2024 14:26:03 +0800 Subject: [PATCH] sdk重连优化 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 584 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 542 insertions(+), 42 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java index 57a322f..57afa7b 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java @@ -1,9 +1,12 @@ package com.hdl.sdk.connect.socket; +import android.os.Build; import android.text.TextUtils; -import android.util.Log; + +import androidx.annotation.RequiresApi; import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; @@ -13,13 +16,22 @@ import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.ThreadToolUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; -import com.hdl.sdk.connect.bean.request.BroadcastRequest; -import com.hdl.sdk.connect.bean.response.BaseLocalResponse; -import com.hdl.sdk.connect.bean.request.DeviceControlRequest; -import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest; +import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LinkRequest; import com.hdl.sdk.connect.bean.LinkResponse; +import com.hdl.sdk.connect.bean.LoginRequest; +import com.hdl.sdk.connect.bean.request.BroadcastRequest; +import com.hdl.sdk.connect.bean.request.DeviceAuthRequest; +import com.hdl.sdk.connect.bean.request.DeviceControlRequest; +import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest; +import com.hdl.sdk.connect.bean.request.ListOidRequest; +import com.hdl.sdk.connect.bean.request.ListOidRequest2; +import com.hdl.sdk.connect.bean.request.ListSidRequest; +import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.request.PropertyReadRequest; +import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse; +import com.hdl.sdk.connect.bean.response.BaseLocalResponse; +import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack; import com.hdl.sdk.connect.config.HDLLinkConfig; @@ -59,7 +71,7 @@ statusListener = new ConnectStatusListener() { @Override public void onConnecting() { - broadcastRequest(); + //broadcastRequest(); } @Override @@ -74,42 +86,90 @@ }; } + public boolean isBroadcast = false; + + /** * 骞挎挱鑷韩淇℃伅缁欎富缃戝叧 */ - private void broadcastRequest() { - String time = String.valueOf(System.currentTimeMillis()); - if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) { - LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄"); - return; - } - BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200"); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request),true); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() { - @Override - public void onSuccess(LinkResponse msg) { - LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); - } + public void broadcastRequest() { + new Thread(new Runnable() { @Override - public void onError(HDLLinkException e) { + public void run() { + while (true) { + try { + Thread.sleep(5000); + try { + if (!HDLLink.getInstance().checkIfCertified()) { + continue; + } + + if (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected) { + continue; + } + } catch (Exception e) { + + } + LogUtils.i("骞挎挱璁惧鏈韩淇℃伅"); + String time = String.valueOf(System.currentTimeMillis()); + if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) { + LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄"); + continue; + } + BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200"); + HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() { + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public void onSuccess(LinkResponse msg) { + String data = msg.getData(); + if (!TextUtils.isEmpty(data)) { + DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() { + }.getType()); + + if ((response == null) || (response.getObjects() == null) || (response.getObjects().getIPAddress() == null)) + return; + + HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress()); + LogUtils.i("---getIpAddress=" + HDLLinkConfig.getInstance().getIpAddress()); + + HDLLinkConfig.getInstance().reSaveConfig(); + } + + isBroadcast = true; + getTcp(); + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); + } + + @Override + public void onError(HDLLinkException e) { + isBroadcast = false; + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�---onError=" + e.toString()); + } + }); +// HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); + //HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); + } catch (Exception e) { + LogUtils.e("骞挎挱璁惧鏈韩淇℃伅澶辫触锛屽け璐ヤ俊鎭細" + e.getMessage()); + } + } } - }); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request),true); + }).start(); } - private static class SingletonInstance { - private static final HDLSocket INSTANCE = new HDLSocket(); - } + // private static class SingletonInstance { +// } + private static final HDLSocket instance = new HDLSocket(); public static HDLSocket getInstance() { - return SingletonInstance.INSTANCE; + return instance; } SocketOptions options; + private SocketOptions getTcpOptions() { - if(null!=options){ + if (null != options) { return options; } options = new SocketOptions(); @@ -406,19 +466,20 @@ } } - public SocketBoot getTcp() throws RuntimeException { - if (TextUtils.isEmpty(getTcpIp())) { + public synchronized SocketBoot getTcp() throws RuntimeException { + String gatewayIpAddress = getTcpIp(); + if (TextUtils.isEmpty(gatewayIpAddress)) { LogUtils.e("璇锋悳绱㈢綉鍏�"); throw new RuntimeException("璇锋悳绱㈢綉鍏�"); } //濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲 - if (tcpBoot == null||!getTcpOptions().getIp().equals(getTcpIp())) { - tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions()); + if (tcpBoot == null || !getTcpOptions().getIp().equals(gatewayIpAddress)) { + tcpBoot = TcpClient.init(gatewayIpAddress, getTcpPort(), getTcpOptions()); tcpBoot.SetHeartbeat(new IHeartbeat() { @Override public void heartbeat() { - if(HDLLinkConfig.getInstance().getDeviceInfoBean()==null||HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()==null) { + if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) { LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�"); return; } @@ -427,6 +488,10 @@ JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("id", IdUtils.getUUId()); jsonObject.addProperty("time_stamp", time); + + if (HDLLinkConfig.getInstance().getRequestBean() != null) { + jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC()); + } String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()); @@ -482,8 +547,56 @@ } /** - * 鍦烘櫙鎺у埗 - * @param sids 鍦烘櫙sid鍒楄〃 + * 鑾峰彇鍦烘櫙鍒楄〃 + */ + public void getScene(List<String> sids, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + List<PropertyReadRequest> list = new ArrayList<>(); + for (String s : sids) { + list.add(new PropertyReadRequest(s)); + } + data.setObjects(list); + + String topic = String.format(TopicConstant.SCENE_GET, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); + } + } + } + + /** + * 鍦烘櫙鎺у埗 + * + * @param sids 鍦烘櫙sid鍒楄〃 * @param callBack 鍥炶皟 */ public void controlScene(List<String> sids, HDLLinkCallBack callBack) { @@ -530,6 +643,337 @@ } } + /** + * 涓婃姤oid鍒楄〃 + * + * @param request 璁惧淇℃伅 + * @param callBack 鍥炶皟 + */ + public void UploadOidList(ListUploadRequest request, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListUploadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + //2023.10.18淇敼锛屼笂鎶id鍒楄〃澧炲姞parentOid + if (request != null && !TextUtils.isEmpty(HDLLinkConfig.getInstance().getParentOid())) { + request.setParentOid(HDLLinkConfig.getInstance().getParentOid()); + } + + List<ListUploadRequest> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.LIST_UPLOAD, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + /** + * 涓婃姤Sid鍒楄〃 + * + * @param requestList sid鍒楄〃 + * @param callBack 鍥炶皟 + */ + public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListSidRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + data.setObjects(requestList); + + String topic = String.format(TopicConstant.LIST_SID_UPLOAD, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + /** + * 涓婃姤鍏ョ綉璁よ瘉缁撴灉 + * + * @param mac mac + * @param result 缁撴灉0/-1 + * @param message 璁よ瘉淇℃伅 + * @param auth_code 浜戠璁よ瘉code + * @param callBack 缁撴灉鍥炶皟 + */ + public void UploadDeviceAuth(String mac, String result, String message, String auth_code, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<DeviceAuthRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + DeviceAuthRequest deviceAuthRequest = new DeviceAuthRequest(); + deviceAuthRequest.setMac(mac); + deviceAuthRequest.setResult(result); + deviceAuthRequest.setMessage(message); + deviceAuthRequest.setAuth_code(auth_code); + + List<DeviceAuthRequest> list = new ArrayList<>(); + list.add(deviceAuthRequest); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DEIVCE_AUTH_RESULT_NOTIFY, getGatewayId()); + LinkRequest linkRequest = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(linkRequest.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + + /** + * tcp鐧诲綍鏂逛究鑾峰彇鐘舵�� + * + * @param clientType 瀹㈡埛绔被鍨� + * 搴旂敤锛歛pp锛� + * 璋冭瘯杞欢锛歱rogram锛� + * 绗笁鏂癸細third_party锛� + * 缃戝叧锛歡ateway锛� + * 鍏跺畠锛歰ther + * @param version 鍗忚鐗堟湰 + */ + public void tcpLogin(String clientType, String version, HDLLinkCallBack callBack) { + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<LoginRequest> data = new BaseLocalResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + + final LoginRequest request = new LoginRequest(); + request.setVersion(version); + request.setClientType(clientType); + + data.setObjects(request); + + String topic = String.format(TopicConstant.GATEWAY_LOGIN, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + LogUtils.i("tcpLogin onSucceed"); + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + + /** + * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧 + * + * @param oid 浠庣綉鍏筹紙璁惧锛塷id + * @param isForce 鏄惁寮哄埗閫�缃� + * @param callBack 缁撴灉鍥炶皟 + */ + public void deleteNetwork(String oid, boolean isForce, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(oid)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListOidRequest2>> data = new BaseLocalResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + + final ListOidRequest2 request = new ListOidRequest2(); + request.setOid(oid); + List<ListOidRequest2> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DELETE_REQUEST, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + + if (isForce) {//寮哄埗閫�缃戯紝涓嶇瓑缃戝叧鍥炲鐩存帴娓呴櫎鏁版嵁 + HDLLinkConfig.getInstance().clearConfig(); + } + + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + if (callBack == null) return; + try { + callBack.onSuccess("閫�缃戞垚鍔�"); + HDLLinkConfig.getInstance().clearConfig(); + + } catch (Exception e) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + /** + * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧鎷撴墤鍏崇郴 + * + * @param oid 浠庣綉鍏筹紙璁惧锛塷id + * @param callBack 缁撴灉鍥炶皟 + */ + public void deleteNetwork(String oid, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(oid)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalCodeResponse<List<ListOidRequest>> data = new BaseLocalCodeResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + data.setCode("0"); + + final ListOidRequest request = new ListOidRequest(); + request.setOid(oid); + List<ListOidRequest> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DELETE_NOTIFY_REPLY, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + +// String replyTopic = topic + "_reply"; + + try { + sendMsg(message.getSendBytes(), topic, null, new SendListener() { + @Override + public void onSucceed() { + HDLLinkConfig.getInstance().clearConfig(); + if (callBack == null) return; + try { + callBack.onSuccess("閫�缃戞垚鍔�"); + } catch (Exception e) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + // /** // * 娓呯┖缂撳瓨 // */ @@ -549,7 +993,11 @@ public void tcpSendMsg(String topic, String bodyStr, HDLLinkCallBack callBack) { try { LinkRequest message = new LinkRequest(topic, bodyStr); + if (topic != null && topic.endsWith("_reply")) { + callBack = null; + } String replyTopic = topic + "_reply"; + HDLLinkCallBack finalCallBack = callBack; sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -558,8 +1006,8 @@ @Override public void onError() { - if (callBack != null) { - callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + if (finalCallBack != null) { + finalCallBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); @@ -573,19 +1021,19 @@ /** * 閫氱敤TCP鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙� * - * @param topic 鍙戦�佹暟鎹� - * @param bodyStr 鍥炲鐨勪富棰� + * @param topic 鍙戦�佹暟鎹� + * @param bodyStr 鍥炲鐨勪富棰� */ public void tcpSendMsg(String topic, String bodyStr) { try { if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { - LogUtils.e("udpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); + LogUtils.e("tcpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); return; } LinkRequest message = new LinkRequest(topic, bodyStr); getTcp().sendMsg(message.getSendBytes()); } catch (Exception e) { - LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :"+e.getMessage()); + LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :" + e.getMessage()); } } @@ -596,7 +1044,7 @@ public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) { try { - if(eventTag!=null) { + if (eventTag != null) { final AtomicInteger sendCount = new AtomicInteger(0); final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1); @@ -618,7 +1066,7 @@ threadPool.scheduleWithFixedDelay(new Runnable() { @Override public void run() { - if (sendCount.get() < 3) { + if (sendCount.get() < 0) { sendCount.set(sendCount.get() + 1); getTcp().sendMsg(data); } else { @@ -668,4 +1116,56 @@ } + /** + * 鍥炲缃戝叧閰嶇疆鍛戒护 + * + * @param mac_Oid_GatewayId + * @param msgId 娑堟伅Id + * @param callBack + */ + public void gatewayRemoteEditReply(String mac_Oid_GatewayId, String msgId, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(mac_Oid_GatewayId)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalCodeResponse<List<String>> data = new BaseLocalCodeResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + data.setCode("0"); + + + String topic = String.format(TopicConstant.GATEWAY_EDIT_REMOTE_REPLY, mac_Oid_GatewayId); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + + try { + sendMsg(message.getSendBytes(), topic, callBack, new SendListener() { + @Override + public void onSucceed() { + if (callBack == null) return; + try { + callBack.onSuccess("閫�缃戞垚鍔�"); + HDLLinkConfig.getInstance().clearConfig(); + + } catch (Exception e) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + } -- Gitblit v1.8.0