package com.hdl.sdk.link.core.bean; import android.text.TextUtils; import com.hdl.sdk.link.common.utils.ByteUtils; import java.nio.charset.StandardCharsets; /** * Created by Tong on 2021/9/29. */ public class LinkRequest { private String topic; private String replyTopic; protected byte []data; private int length=0; private boolean encrypt; public String getCloudTopic() { if(TextUtils.isEmpty(cloudTopic)){ return topic; } return cloudTopic; } /** * 平台topic * @param cloudTopic */ public void setCloudTopic(String cloudTopic) { this.cloudTopic = cloudTopic; } private String cloudTopic; public LinkRequest(String topic,String replyTopic, String data, boolean encrypt) { this.topic = topic; this.replyTopic=replyTopic; setData(data); this.encrypt = encrypt; } public LinkRequest(String topic, String data, boolean encrypt) { this(topic,null,data,encrypt); } public LinkRequest(String topic, byte []data, boolean encrypt) { this.topic = topic; setData(data); this.encrypt = encrypt; } protected LinkRequest(){} public String getTopic() { return topic; } public void setTopic(String topic) { this.topic = topic; } public byte[] getData() { return data; } public void setData(String data) { if (!TextUtils.isEmpty(data)) { this.data = ByteUtils.stringToBytes(data); setLength(this.data.length); } } public void setData(byte []data) { this.data = data; if(data!=null){ setLength(data.length); } } public int getLength() { return length; } private void setLength(int length) { this.length = length; } /** * 加密标识 * * @return */ public boolean isEncrypt() { return encrypt; } /** * 加密标识 * * @param encrypt */ public void setEncrypt(boolean encrypt) { this.encrypt = encrypt; } public String getReplyTopic() { if(TextUtils.isEmpty(replyTopic)){ return topic+"_reply"; } return replyTopic; } public void setReplyTopic(String replyTopic) { this.replyTopic = replyTopic; } public byte [] getSendBytes() { try { String header = "Topic:" + getTopic() + "\r\n" + "Length:" + getLength() + "\r\n\r\n"; return ByteUtils.concatBytes(header.getBytes(StandardCharsets.UTF_8), getData()); } catch (Exception e) { return new byte[]{}; } } public byte [] getCloudSendBytes() { try { //link透传命令,内容需要包含主题,长度 if(getCloudTopic().contains("/native/a/down/slaveoid/")){ return getSendBytes(); }else { return getData(); } } catch (Exception e) { return new byte[]{}; } } private int getBytesLength(String str) { return ByteUtils.stringToBytes(str).length; } }