package com.hdl.sdk.link.core.bean;
|
|
import android.text.TextUtils;
|
|
import com.hdl.sdk.link.common.utils.ByteUtils;
|
import com.hdl.sdk.link.enums.NativeType;
|
|
|
/**
|
* 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;
|
|
/**
|
* 通讯协议
|
*/
|
private NativeType nativeType;
|
|
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("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;
|
}
|
|
/**
|
* 原生通讯协议类型
|
* @return
|
*/
|
public NativeType getNativeType() {
|
return nativeType;
|
}
|
|
/**
|
* 原生通讯协议类型
|
* @param nativeType
|
*/
|
public void setNativeType(NativeType nativeType) {
|
this.nativeType = nativeType;
|
}
|
}
|