|
|
|
@ -40,6 +40,7 @@ import java.util.UUID; |
|
|
|
public final class TbMsg implements Serializable { |
|
|
|
|
|
|
|
private final UUID id; |
|
|
|
private final long ts; |
|
|
|
private final String type; |
|
|
|
private final EntityId originator; |
|
|
|
private final TbMsgMetaData metaData; |
|
|
|
@ -51,38 +52,43 @@ public final class TbMsg implements Serializable { |
|
|
|
transient private final TbMsgCallback callback; |
|
|
|
|
|
|
|
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data) { |
|
|
|
return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, TbMsgCallback.EMPTY); |
|
|
|
return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, TbMsgCallback.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data, RuleChainId ruleChainId, RuleNodeId ruleNodeId) { |
|
|
|
return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
|
|
|
return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data) { |
|
|
|
return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), dataType, data, null, null, TbMsgCallback.EMPTY); |
|
|
|
return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), dataType, data, null, null, TbMsgCallback.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data, RuleChainId ruleChainId, RuleNodeId ruleNodeId) { |
|
|
|
return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), dataType, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
|
|
|
return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), dataType, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data, TbMsgCallback callback) { |
|
|
|
return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, callback); |
|
|
|
return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, callback); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg transformMsg(TbMsg origMsg, String type, EntityId originator, TbMsgMetaData metaData, String data) { |
|
|
|
return new TbMsg(origMsg.getId(), type, originator, metaData.copy(), origMsg.getDataType(), |
|
|
|
return new TbMsg(origMsg.getId(), origMsg.getTs(), type, originator, metaData.copy(), origMsg.getDataType(), |
|
|
|
data, origMsg.getRuleChainId(), origMsg.getRuleNodeId(), origMsg.getCallback()); |
|
|
|
} |
|
|
|
|
|
|
|
public static TbMsg newMsg(TbMsg tbMsg, RuleChainId ruleChainId, RuleNodeId ruleNodeId) { |
|
|
|
return new TbMsg(UUID.randomUUID(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(), |
|
|
|
return new TbMsg(UUID.randomUUID(), tbMsg.getTs(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(), |
|
|
|
tbMsg.getDataType(), tbMsg.getData(), ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
private TbMsg(UUID id, String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data, |
|
|
|
private TbMsg(UUID id, long ts, String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data, |
|
|
|
RuleChainId ruleChainId, RuleNodeId ruleNodeId, TbMsgCallback callback) { |
|
|
|
this.id = id; |
|
|
|
if (ts > 0) { |
|
|
|
this.ts = ts; |
|
|
|
} else { |
|
|
|
this.ts = System.currentTimeMillis(); |
|
|
|
} |
|
|
|
this.type = type; |
|
|
|
this.originator = originator; |
|
|
|
this.metaData = metaData; |
|
|
|
@ -105,6 +111,7 @@ public final class TbMsg implements Serializable { |
|
|
|
public static byte[] toByteArray(TbMsg msg) { |
|
|
|
MsgProtos.TbMsgProto.Builder builder = MsgProtos.TbMsgProto.newBuilder(); |
|
|
|
builder.setId(msg.getId().toString()); |
|
|
|
builder.setTs(msg.getTs()); |
|
|
|
builder.setType(msg.getType()); |
|
|
|
builder.setEntityType(msg.getOriginator().getEntityType().name()); |
|
|
|
builder.setEntityIdMSB(msg.getOriginator().getId().getMostSignificantBits()); |
|
|
|
@ -124,7 +131,6 @@ public final class TbMsg implements Serializable { |
|
|
|
builder.setMetaData(MsgProtos.TbMsgMetaDataProto.newBuilder().putAllData(msg.getMetaData().getData()).build()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
builder.setDataType(msg.getDataType().ordinal()); |
|
|
|
builder.setData(msg.getData()); |
|
|
|
return builder.build().toByteArray(); |
|
|
|
@ -144,18 +150,18 @@ public final class TbMsg implements Serializable { |
|
|
|
ruleNodeId = new RuleNodeId(new UUID(proto.getRuleNodeIdMSB(), proto.getRuleNodeIdLSB())); |
|
|
|
} |
|
|
|
TbMsgDataType dataType = TbMsgDataType.values()[proto.getDataType()]; |
|
|
|
return new TbMsg(UUID.fromString(proto.getId()), proto.getType(), entityId, metaData, dataType, proto.getData(), ruleChainId, ruleNodeId, callback); |
|
|
|
return new TbMsg(UUID.fromString(proto.getId()), proto.getTs(), proto.getType(), entityId, metaData, dataType, proto.getData(), ruleChainId, ruleNodeId, callback); |
|
|
|
} catch (InvalidProtocolBufferException e) { |
|
|
|
throw new IllegalStateException("Could not parse protobuf for TbMsg", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsg copyWithRuleChainId(RuleChainId ruleChainId) { |
|
|
|
return new TbMsg(this.id, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, null, callback); |
|
|
|
return new TbMsg(this.id, this.ts, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, null, callback); |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsg copyWithRuleNodeId(RuleChainId ruleChainId, RuleNodeId ruleNodeId) { |
|
|
|
return new TbMsg(this.id, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, ruleNodeId, callback); |
|
|
|
return new TbMsg(this.id, this.ts, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, ruleNodeId, callback); |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsgCallback getCallback() { |
|
|
|
|