Commit df133e48fffee8d66c8df9338471bc5d22a9693f
Committed by
Andrew Shvayka
1 parent
7724495c
DefaultTransportService refactored
Showing
3 changed files
with
106 additions
and
72 deletions
@@ -156,11 +156,15 @@ public class DefaultTbClusterService implements TbClusterService { | @@ -156,11 +156,15 @@ public class DefaultTbClusterService implements TbClusterService { | ||
156 | private TbMsg transformMsg(TbMsg tbMsg, DeviceProfile deviceProfile) { | 156 | private TbMsg transformMsg(TbMsg tbMsg, DeviceProfile deviceProfile) { |
157 | if (deviceProfile != null) { | 157 | if (deviceProfile != null) { |
158 | RuleChainId targetRuleChainId = deviceProfile.getDefaultRuleChainId(); | 158 | RuleChainId targetRuleChainId = deviceProfile.getDefaultRuleChainId(); |
159 | - if (targetRuleChainId != null && !targetRuleChainId.equals(tbMsg.getRuleChainId())) { | ||
160 | - tbMsg = TbMsg.transformMsg(tbMsg, targetRuleChainId); | ||
161 | - } | ||
162 | String targetQueueName = deviceProfile.getDefaultQueueName(); | 159 | String targetQueueName = deviceProfile.getDefaultQueueName(); |
163 | - if (targetQueueName != null && !targetQueueName.equals(tbMsg.getQueueName())) { | 160 | + boolean isRuleChainTransform = targetRuleChainId != null && !targetRuleChainId.equals(tbMsg.getRuleChainId()); |
161 | + boolean isQueueTransform = targetQueueName != null && !targetQueueName.equals(tbMsg.getQueueName()); | ||
162 | + | ||
163 | + if (isRuleChainTransform && isQueueTransform) { | ||
164 | + tbMsg = TbMsg.transformMsg(tbMsg, targetRuleChainId, targetQueueName); | ||
165 | + } else if (isRuleChainTransform) { | ||
166 | + tbMsg = TbMsg.transformMsg(tbMsg, targetRuleChainId); | ||
167 | + } else if (isQueueTransform) { | ||
164 | tbMsg = TbMsg.transformMsg(tbMsg, targetQueueName); | 168 | tbMsg = TbMsg.transformMsg(tbMsg, targetQueueName); |
165 | } | 169 | } |
166 | } | 170 | } |
@@ -95,6 +95,11 @@ public final class TbMsg implements Serializable { | @@ -95,6 +95,11 @@ public final class TbMsg implements Serializable { | ||
95 | origMsg.data, origMsg.getRuleChainId(), null, origMsg.getCallback()); | 95 | origMsg.data, origMsg.getRuleChainId(), null, origMsg.getCallback()); |
96 | } | 96 | } |
97 | 97 | ||
98 | + public static TbMsg transformMsg(TbMsg origMsg, RuleChainId ruleChainId, String queueName) { | ||
99 | + return new TbMsg(queueName, origMsg.id, origMsg.ts, origMsg.type, origMsg.originator, origMsg.metaData, origMsg.dataType, | ||
100 | + origMsg.data, ruleChainId, null, origMsg.getCallback()); | ||
101 | + } | ||
102 | + | ||
98 | public static TbMsg newMsg(TbMsg tbMsg, RuleChainId ruleChainId, RuleNodeId ruleNodeId) { | 103 | public static TbMsg newMsg(TbMsg tbMsg, RuleChainId ruleChainId, RuleNodeId ruleNodeId) { |
99 | return new TbMsg(tbMsg.getQueueName(), UUID.randomUUID(), tbMsg.getTs(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(), | 104 | return new TbMsg(tbMsg.getQueueName(), UUID.randomUUID(), tbMsg.getTs(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(), |
100 | tbMsg.getDataType(), tbMsg.getData(), ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); | 105 | tbMsg.getDataType(), tbMsg.getData(), ruleChainId, ruleNodeId, TbMsgCallback.EMPTY); |
@@ -23,7 +23,6 @@ import com.google.gson.JsonObject; | @@ -23,7 +23,6 @@ import com.google.gson.JsonObject; | ||
23 | import com.google.protobuf.ByteString; | 23 | import com.google.protobuf.ByteString; |
24 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
25 | import org.springframework.beans.factory.annotation.Value; | 25 | import org.springframework.beans.factory.annotation.Value; |
26 | -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
27 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
28 | import org.thingsboard.common.util.ThingsBoardThreadFactory; | 27 | import org.thingsboard.common.util.ThingsBoardThreadFactory; |
29 | import org.thingsboard.server.common.data.DeviceProfile; | 28 | import org.thingsboard.server.common.data.DeviceProfile; |
@@ -53,21 +52,46 @@ import org.thingsboard.server.common.transport.TransportTenantProfileCache; | @@ -53,21 +52,46 @@ import org.thingsboard.server.common.transport.TransportTenantProfileCache; | ||
53 | import org.thingsboard.server.common.transport.auth.GetOrCreateDeviceFromGatewayResponse; | 52 | import org.thingsboard.server.common.transport.auth.GetOrCreateDeviceFromGatewayResponse; |
54 | import org.thingsboard.server.common.transport.auth.TransportDeviceInfo; | 53 | import org.thingsboard.server.common.transport.auth.TransportDeviceInfo; |
55 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; | 54 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; |
56 | -import org.thingsboard.server.common.transport.limits.TransportRateLimit; | ||
57 | import org.thingsboard.server.common.transport.limits.TransportRateLimitService; | 55 | import org.thingsboard.server.common.transport.limits.TransportRateLimitService; |
58 | import org.thingsboard.server.common.transport.limits.TransportRateLimitType; | 56 | import org.thingsboard.server.common.transport.limits.TransportRateLimitType; |
59 | import org.thingsboard.server.common.transport.profile.TenantProfileUpdateResult; | 57 | import org.thingsboard.server.common.transport.profile.TenantProfileUpdateResult; |
60 | import org.thingsboard.server.common.transport.util.DataDecodingEncodingService; | 58 | import org.thingsboard.server.common.transport.util.DataDecodingEncodingService; |
61 | import org.thingsboard.server.common.transport.util.JsonUtils; | 59 | import org.thingsboard.server.common.transport.util.JsonUtils; |
62 | -import org.thingsboard.server.gen.transport.TransportProtos; | 60 | +import org.thingsboard.server.gen.transport.TransportProtos.ClaimDeviceMsg; |
61 | +import org.thingsboard.server.gen.transport.TransportProtos.DeviceInfoProto; | ||
62 | +import org.thingsboard.server.gen.transport.TransportProtos.EntityDeleteMsg; | ||
63 | +import org.thingsboard.server.gen.transport.TransportProtos.EntityUpdateMsg; | ||
64 | +import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeRequestMsg; | ||
65 | +import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileRequestMsg; | ||
66 | +import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileResponseMsg; | ||
67 | +import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg; | ||
68 | +import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayResponseMsg; | ||
69 | +import org.thingsboard.server.gen.transport.TransportProtos.PostAttributeMsg; | ||
70 | +import org.thingsboard.server.gen.transport.TransportProtos.PostTelemetryMsg; | ||
63 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceRequestMsg; | 71 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceRequestMsg; |
64 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceResponseMsg; | 72 | import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceResponseMsg; |
73 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionCloseNotificationProto; | ||
74 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionEvent; | ||
75 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionEventMsg; | ||
76 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto; | ||
77 | +import org.thingsboard.server.gen.transport.TransportProtos.SessionType; | ||
78 | +import org.thingsboard.server.gen.transport.TransportProtos.SubscribeToAttributeUpdatesMsg; | ||
79 | +import org.thingsboard.server.gen.transport.TransportProtos.SubscribeToRPCMsg; | ||
80 | +import org.thingsboard.server.gen.transport.TransportProtos.SubscriptionInfoProto; | ||
65 | import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg; | 81 | import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg; |
82 | +import org.thingsboard.server.gen.transport.TransportProtos.ToDeviceRpcResponseMsg; | ||
66 | import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg; | 83 | import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg; |
84 | +import org.thingsboard.server.gen.transport.TransportProtos.ToServerRpcRequestMsg; | ||
85 | +import org.thingsboard.server.gen.transport.TransportProtos.ToServerRpcResponseMsg; | ||
67 | import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg; | 86 | import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg; |
68 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; | 87 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; |
69 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; | 88 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; |
70 | import org.thingsboard.server.gen.transport.TransportProtos.TransportToDeviceActorMsg; | 89 | import org.thingsboard.server.gen.transport.TransportProtos.TransportToDeviceActorMsg; |
90 | +import org.thingsboard.server.gen.transport.TransportProtos.TsKvListProto; | ||
91 | +import org.thingsboard.server.gen.transport.TransportProtos.ValidateBasicMqttCredRequestMsg; | ||
92 | +import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceCredentialsResponseMsg; | ||
93 | +import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceTokenRequestMsg; | ||
94 | +import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509CertRequestMsg; | ||
71 | import org.thingsboard.server.queue.TbQueueCallback; | 95 | import org.thingsboard.server.queue.TbQueueCallback; |
72 | import org.thingsboard.server.queue.TbQueueConsumer; | 96 | import org.thingsboard.server.queue.TbQueueConsumer; |
73 | import org.thingsboard.server.queue.TbQueueMsgMetadata; | 97 | import org.thingsboard.server.queue.TbQueueMsgMetadata; |
@@ -237,14 +261,14 @@ public class DefaultTransportService implements TransportService { | @@ -237,14 +261,14 @@ public class DefaultTransportService implements TransportService { | ||
237 | } | 261 | } |
238 | 262 | ||
239 | @Override | 263 | @Override |
240 | - public void registerAsyncSession(TransportProtos.SessionInfoProto sessionInfo, SessionMsgListener listener) { | ||
241 | - sessions.putIfAbsent(toSessionId(sessionInfo), new SessionMetaData(sessionInfo, TransportProtos.SessionType.ASYNC, listener)); | 264 | + public void registerAsyncSession(SessionInfoProto sessionInfo, SessionMsgListener listener) { |
265 | + sessions.putIfAbsent(toSessionId(sessionInfo), new SessionMetaData(sessionInfo, SessionType.ASYNC, listener)); | ||
242 | } | 266 | } |
243 | 267 | ||
244 | @Override | 268 | @Override |
245 | - public TransportProtos.GetEntityProfileResponseMsg getRoutingInfo(TransportProtos.GetEntityProfileRequestMsg msg) { | ||
246 | - TbProtoQueueMsg<TransportProtos.TransportApiRequestMsg> protoMsg = | ||
247 | - new TbProtoQueueMsg<>(UUID.randomUUID(), TransportProtos.TransportApiRequestMsg.newBuilder().setEntityProfileRequestMsg(msg).build()); | 269 | + public GetEntityProfileResponseMsg getRoutingInfo(GetEntityProfileRequestMsg msg) { |
270 | + TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = | ||
271 | + new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setEntityProfileRequestMsg(msg).build()); | ||
248 | try { | 272 | try { |
249 | TbProtoQueueMsg<TransportApiResponseMsg> response = transportApiRequestTemplate.send(protoMsg).get(); | 273 | TbProtoQueueMsg<TransportApiResponseMsg> response = transportApiRequestTemplate.send(protoMsg).get(); |
250 | return response.getValue().getEntityProfileResponseMsg(); | 274 | return response.getValue().getEntityProfileResponseMsg(); |
@@ -254,7 +278,7 @@ public class DefaultTransportService implements TransportService { | @@ -254,7 +278,7 @@ public class DefaultTransportService implements TransportService { | ||
254 | } | 278 | } |
255 | 279 | ||
256 | @Override | 280 | @Override |
257 | - public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceTokenRequestMsg msg, | 281 | + public void process(DeviceTransportType transportType, ValidateDeviceTokenRequestMsg msg, |
258 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 282 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
259 | log.trace("Processing msg: {}", msg); | 283 | log.trace("Processing msg: {}", msg); |
260 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), | 284 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), |
@@ -263,7 +287,7 @@ public class DefaultTransportService implements TransportService { | @@ -263,7 +287,7 @@ public class DefaultTransportService implements TransportService { | ||
263 | } | 287 | } |
264 | 288 | ||
265 | @Override | 289 | @Override |
266 | - public void process(DeviceTransportType transportType, TransportProtos.ValidateBasicMqttCredRequestMsg msg, | 290 | + public void process(DeviceTransportType transportType, ValidateBasicMqttCredRequestMsg msg, |
267 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 291 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
268 | log.trace("Processing msg: {}", msg); | 292 | log.trace("Processing msg: {}", msg); |
269 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), | 293 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), |
@@ -272,7 +296,7 @@ public class DefaultTransportService implements TransportService { | @@ -272,7 +296,7 @@ public class DefaultTransportService implements TransportService { | ||
272 | } | 296 | } |
273 | 297 | ||
274 | @Override | 298 | @Override |
275 | - public void process(DeviceTransportType transportType, TransportProtos.ValidateDeviceX509CertRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 299 | + public void process(DeviceTransportType transportType, ValidateDeviceX509CertRequestMsg msg, TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
276 | log.trace("Processing msg: {}", msg); | 300 | log.trace("Processing msg: {}", msg); |
277 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateX509CertRequestMsg(msg).build()); | 301 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setValidateX509CertRequestMsg(msg).build()); |
278 | doProcess(transportType, protoMsg, callback); | 302 | doProcess(transportType, protoMsg, callback); |
@@ -281,7 +305,7 @@ public class DefaultTransportService implements TransportService { | @@ -281,7 +305,7 @@ public class DefaultTransportService implements TransportService { | ||
281 | private void doProcess(DeviceTransportType transportType, TbProtoQueueMsg<TransportApiRequestMsg> protoMsg, | 305 | private void doProcess(DeviceTransportType transportType, TbProtoQueueMsg<TransportApiRequestMsg> protoMsg, |
282 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { | 306 | TransportServiceCallback<ValidateDeviceCredentialsResponse> callback) { |
283 | ListenableFuture<ValidateDeviceCredentialsResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { | 307 | ListenableFuture<ValidateDeviceCredentialsResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { |
284 | - TransportProtos.ValidateDeviceCredentialsResponseMsg msg = tmp.getValue().getValidateCredResponseMsg(); | 308 | + ValidateDeviceCredentialsResponseMsg msg = tmp.getValue().getValidateCredResponseMsg(); |
285 | ValidateDeviceCredentialsResponse.ValidateDeviceCredentialsResponseBuilder result = ValidateDeviceCredentialsResponse.builder(); | 309 | ValidateDeviceCredentialsResponse.ValidateDeviceCredentialsResponseBuilder result = ValidateDeviceCredentialsResponse.builder(); |
286 | if (msg.hasDeviceInfo()) { | 310 | if (msg.hasDeviceInfo()) { |
287 | result.credentials(msg.getCredentialsBody()); | 311 | result.credentials(msg.getCredentialsBody()); |
@@ -304,11 +328,11 @@ public class DefaultTransportService implements TransportService { | @@ -304,11 +328,11 @@ public class DefaultTransportService implements TransportService { | ||
304 | } | 328 | } |
305 | 329 | ||
306 | @Override | 330 | @Override |
307 | - public void process(TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg requestMsg, TransportServiceCallback<GetOrCreateDeviceFromGatewayResponse> callback) { | 331 | + public void process(GetOrCreateDeviceFromGatewayRequestMsg requestMsg, TransportServiceCallback<GetOrCreateDeviceFromGatewayResponse> callback) { |
308 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setGetOrCreateDeviceRequestMsg(requestMsg).build()); | 332 | TbProtoQueueMsg<TransportApiRequestMsg> protoMsg = new TbProtoQueueMsg<>(UUID.randomUUID(), TransportApiRequestMsg.newBuilder().setGetOrCreateDeviceRequestMsg(requestMsg).build()); |
309 | log.trace("Processing msg: {}", requestMsg); | 333 | log.trace("Processing msg: {}", requestMsg); |
310 | ListenableFuture<GetOrCreateDeviceFromGatewayResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { | 334 | ListenableFuture<GetOrCreateDeviceFromGatewayResponse> response = Futures.transform(transportApiRequestTemplate.send(protoMsg), tmp -> { |
311 | - TransportProtos.GetOrCreateDeviceFromGatewayResponseMsg msg = tmp.getValue().getGetOrCreateDeviceResponseMsg(); | 335 | + GetOrCreateDeviceFromGatewayResponseMsg msg = tmp.getValue().getGetOrCreateDeviceResponseMsg(); |
312 | GetOrCreateDeviceFromGatewayResponse.GetOrCreateDeviceFromGatewayResponseBuilder result = GetOrCreateDeviceFromGatewayResponse.builder(); | 336 | GetOrCreateDeviceFromGatewayResponse.GetOrCreateDeviceFromGatewayResponseBuilder result = GetOrCreateDeviceFromGatewayResponse.builder(); |
313 | if (msg.hasDeviceInfo()) { | 337 | if (msg.hasDeviceInfo()) { |
314 | TransportDeviceInfo tdi = getTransportDeviceInfo(msg.getDeviceInfo()); | 338 | TransportDeviceInfo tdi = getTransportDeviceInfo(msg.getDeviceInfo()); |
@@ -323,7 +347,7 @@ public class DefaultTransportService implements TransportService { | @@ -323,7 +347,7 @@ public class DefaultTransportService implements TransportService { | ||
323 | AsyncCallbackTemplate.withCallback(response, callback::onSuccess, callback::onError, transportCallbackExecutor); | 347 | AsyncCallbackTemplate.withCallback(response, callback::onSuccess, callback::onError, transportCallbackExecutor); |
324 | } | 348 | } |
325 | 349 | ||
326 | - private TransportDeviceInfo getTransportDeviceInfo(TransportProtos.DeviceInfoProto di) { | 350 | + private TransportDeviceInfo getTransportDeviceInfo(DeviceInfoProto di) { |
327 | TransportDeviceInfo tdi = new TransportDeviceInfo(); | 351 | TransportDeviceInfo tdi = new TransportDeviceInfo(); |
328 | tdi.setTenantId(new TenantId(new UUID(di.getTenantIdMSB(), di.getTenantIdLSB()))); | 352 | tdi.setTenantId(new TenantId(new UUID(di.getTenantIdMSB(), di.getTenantIdLSB()))); |
329 | tdi.setDeviceId(new DeviceId(new UUID(di.getDeviceIdMSB(), di.getDeviceIdLSB()))); | 353 | tdi.setDeviceId(new DeviceId(new UUID(di.getDeviceIdMSB(), di.getDeviceIdLSB()))); |
@@ -345,7 +369,7 @@ public class DefaultTransportService implements TransportService { | @@ -345,7 +369,7 @@ public class DefaultTransportService implements TransportService { | ||
345 | } | 369 | } |
346 | 370 | ||
347 | @Override | 371 | @Override |
348 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SubscriptionInfoProto msg, TransportServiceCallback<Void> callback) { | 372 | + public void process(SessionInfoProto sessionInfo, SubscriptionInfoProto msg, TransportServiceCallback<Void> callback) { |
349 | if (log.isTraceEnabled()) { | 373 | if (log.isTraceEnabled()) { |
350 | log.trace("[{}] Processing msg: {}", toSessionId(sessionInfo), msg); | 374 | log.trace("[{}] Processing msg: {}", toSessionId(sessionInfo), msg); |
351 | } | 375 | } |
@@ -354,7 +378,7 @@ public class DefaultTransportService implements TransportService { | @@ -354,7 +378,7 @@ public class DefaultTransportService implements TransportService { | ||
354 | } | 378 | } |
355 | 379 | ||
356 | @Override | 380 | @Override |
357 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SessionEventMsg msg, TransportServiceCallback<Void> callback) { | 381 | + public void process(SessionInfoProto sessionInfo, SessionEventMsg msg, TransportServiceCallback<Void> callback) { |
358 | if (checkLimits(sessionInfo, msg, callback)) { | 382 | if (checkLimits(sessionInfo, msg, callback)) { |
359 | reportActivityInternal(sessionInfo); | 383 | reportActivityInternal(sessionInfo); |
360 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) | 384 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) |
@@ -363,9 +387,9 @@ public class DefaultTransportService implements TransportService { | @@ -363,9 +387,9 @@ public class DefaultTransportService implements TransportService { | ||
363 | } | 387 | } |
364 | 388 | ||
365 | @Override | 389 | @Override |
366 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostTelemetryMsg msg, TransportServiceCallback<Void> callback) { | 390 | + public void process(SessionInfoProto sessionInfo, PostTelemetryMsg msg, TransportServiceCallback<Void> callback) { |
367 | int dataPoints = 0; | 391 | int dataPoints = 0; |
368 | - for (TransportProtos.TsKvListProto tsKv : msg.getTsKvListList()) { | 392 | + for (TsKvListProto tsKv : msg.getTsKvListList()) { |
369 | dataPoints += tsKv.getKvCount(); | 393 | dataPoints += tsKv.getKvCount(); |
370 | } | 394 | } |
371 | if (checkLimits(sessionInfo, msg, callback, dataPoints, TELEMETRY)) { | 395 | if (checkLimits(sessionInfo, msg, callback, dataPoints, TELEMETRY)) { |
@@ -373,22 +397,19 @@ public class DefaultTransportService implements TransportService { | @@ -373,22 +397,19 @@ public class DefaultTransportService implements TransportService { | ||
373 | TenantId tenantId = new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); | 397 | TenantId tenantId = new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); |
374 | DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); | 398 | DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); |
375 | MsgPackCallback packCallback = new MsgPackCallback(msg.getTsKvListCount(), callback); | 399 | MsgPackCallback packCallback = new MsgPackCallback(msg.getTsKvListCount(), callback); |
376 | - for (TransportProtos.TsKvListProto tsKv : msg.getTsKvListList()) { | 400 | + for (TsKvListProto tsKv : msg.getTsKvListList()) { |
377 | TbMsgMetaData metaData = new TbMsgMetaData(); | 401 | TbMsgMetaData metaData = new TbMsgMetaData(); |
378 | metaData.putValue("deviceName", sessionInfo.getDeviceName()); | 402 | metaData.putValue("deviceName", sessionInfo.getDeviceName()); |
379 | metaData.putValue("deviceType", sessionInfo.getDeviceType()); | 403 | metaData.putValue("deviceType", sessionInfo.getDeviceType()); |
380 | metaData.putValue("ts", tsKv.getTs() + ""); | 404 | metaData.putValue("ts", tsKv.getTs() + ""); |
381 | JsonObject json = JsonUtils.getJsonObject(tsKv.getKvList()); | 405 | JsonObject json = JsonUtils.getJsonObject(tsKv.getKvList()); |
382 | - RuleChainId ruleChainId = resolveRuleChainId(sessionInfo); | ||
383 | - TbMsg tbMsg = TbMsg.newMsg(ServiceQueue.MAIN, SessionMsgType.POST_TELEMETRY_REQUEST.name(), | ||
384 | - deviceId, metaData, gson.toJson(json), ruleChainId, null); | ||
385 | - sendToRuleEngine(tenantId, tbMsg, packCallback); | 406 | + sendToRuleEngine(tenantId, deviceId, sessionInfo, json, metaData, SessionMsgType.POST_TELEMETRY_REQUEST, packCallback); |
386 | } | 407 | } |
387 | } | 408 | } |
388 | } | 409 | } |
389 | 410 | ||
390 | @Override | 411 | @Override |
391 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostAttributeMsg msg, TransportServiceCallback<Void> callback) { | 412 | + public void process(SessionInfoProto sessionInfo, PostAttributeMsg msg, TransportServiceCallback<Void> callback) { |
392 | if (checkLimits(sessionInfo, msg, callback, msg.getKvCount(), TELEMETRY)) { | 413 | if (checkLimits(sessionInfo, msg, callback, msg.getKvCount(), TELEMETRY)) { |
393 | reportActivityInternal(sessionInfo); | 414 | reportActivityInternal(sessionInfo); |
394 | TenantId tenantId = new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); | 415 | TenantId tenantId = new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); |
@@ -398,15 +419,12 @@ public class DefaultTransportService implements TransportService { | @@ -398,15 +419,12 @@ public class DefaultTransportService implements TransportService { | ||
398 | metaData.putValue("deviceName", sessionInfo.getDeviceName()); | 419 | metaData.putValue("deviceName", sessionInfo.getDeviceName()); |
399 | metaData.putValue("deviceType", sessionInfo.getDeviceType()); | 420 | metaData.putValue("deviceType", sessionInfo.getDeviceType()); |
400 | metaData.putValue("notifyDevice", "false"); | 421 | metaData.putValue("notifyDevice", "false"); |
401 | - RuleChainId ruleChainId = resolveRuleChainId(sessionInfo); | ||
402 | - TbMsg tbMsg = TbMsg.newMsg(ServiceQueue.MAIN, SessionMsgType.POST_ATTRIBUTES_REQUEST.name(), | ||
403 | - deviceId, metaData, gson.toJson(json), ruleChainId, null); | ||
404 | - sendToRuleEngine(tenantId, tbMsg, new TransportTbQueueCallback(callback)); | 422 | + sendToRuleEngine(tenantId, deviceId, sessionInfo, json, metaData, SessionMsgType.POST_ATTRIBUTES_REQUEST, new TransportTbQueueCallback(callback)); |
405 | } | 423 | } |
406 | } | 424 | } |
407 | 425 | ||
408 | @Override | 426 | @Override |
409 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.GetAttributeRequestMsg msg, TransportServiceCallback<Void> callback) { | 427 | + public void process(SessionInfoProto sessionInfo, GetAttributeRequestMsg msg, TransportServiceCallback<Void> callback) { |
410 | if (checkLimits(sessionInfo, msg, callback)) { | 428 | if (checkLimits(sessionInfo, msg, callback)) { |
411 | reportActivityInternal(sessionInfo); | 429 | reportActivityInternal(sessionInfo); |
412 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) | 430 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) |
@@ -415,7 +433,7 @@ public class DefaultTransportService implements TransportService { | @@ -415,7 +433,7 @@ public class DefaultTransportService implements TransportService { | ||
415 | } | 433 | } |
416 | 434 | ||
417 | @Override | 435 | @Override |
418 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SubscribeToAttributeUpdatesMsg msg, TransportServiceCallback<Void> callback) { | 436 | + public void process(SessionInfoProto sessionInfo, SubscribeToAttributeUpdatesMsg msg, TransportServiceCallback<Void> callback) { |
419 | if (checkLimits(sessionInfo, msg, callback)) { | 437 | if (checkLimits(sessionInfo, msg, callback)) { |
420 | SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo); | 438 | SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo); |
421 | sessionMetaData.setSubscribedToAttributes(!msg.getUnsubscribe()); | 439 | sessionMetaData.setSubscribedToAttributes(!msg.getUnsubscribe()); |
@@ -425,7 +443,7 @@ public class DefaultTransportService implements TransportService { | @@ -425,7 +443,7 @@ public class DefaultTransportService implements TransportService { | ||
425 | } | 443 | } |
426 | 444 | ||
427 | @Override | 445 | @Override |
428 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SubscribeToRPCMsg msg, TransportServiceCallback<Void> callback) { | 446 | + public void process(SessionInfoProto sessionInfo, SubscribeToRPCMsg msg, TransportServiceCallback<Void> callback) { |
429 | if (checkLimits(sessionInfo, msg, callback)) { | 447 | if (checkLimits(sessionInfo, msg, callback)) { |
430 | SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo); | 448 | SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo); |
431 | sessionMetaData.setSubscribedToRPC(!msg.getUnsubscribe()); | 449 | sessionMetaData.setSubscribedToRPC(!msg.getUnsubscribe()); |
@@ -435,7 +453,7 @@ public class DefaultTransportService implements TransportService { | @@ -435,7 +453,7 @@ public class DefaultTransportService implements TransportService { | ||
435 | } | 453 | } |
436 | 454 | ||
437 | @Override | 455 | @Override |
438 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.ToDeviceRpcResponseMsg msg, TransportServiceCallback<Void> callback) { | 456 | + public void process(SessionInfoProto sessionInfo, ToDeviceRpcResponseMsg msg, TransportServiceCallback<Void> callback) { |
439 | if (checkLimits(sessionInfo, msg, callback)) { | 457 | if (checkLimits(sessionInfo, msg, callback)) { |
440 | reportActivityInternal(sessionInfo); | 458 | reportActivityInternal(sessionInfo); |
441 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) | 459 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) |
@@ -450,13 +468,13 @@ public class DefaultTransportService implements TransportService { | @@ -450,13 +468,13 @@ public class DefaultTransportService implements TransportService { | ||
450 | if (md != null) { | 468 | if (md != null) { |
451 | SessionMsgListener listener = md.getListener(); | 469 | SessionMsgListener listener = md.getListener(); |
452 | transportCallbackExecutor.submit(() -> { | 470 | transportCallbackExecutor.submit(() -> { |
453 | - TransportProtos.ToServerRpcResponseMsg responseMsg = | ||
454 | - TransportProtos.ToServerRpcResponseMsg.newBuilder() | 471 | + ToServerRpcResponseMsg responseMsg = |
472 | + ToServerRpcResponseMsg.newBuilder() | ||
455 | .setRequestId(data.getRequestId()) | 473 | .setRequestId(data.getRequestId()) |
456 | .setError("timeout").build(); | 474 | .setError("timeout").build(); |
457 | listener.onToServerRpcResponse(responseMsg); | 475 | listener.onToServerRpcResponse(responseMsg); |
458 | }); | 476 | }); |
459 | - if (md.getSessionType() == TransportProtos.SessionType.SYNC) { | 477 | + if (md.getSessionType() == SessionType.SYNC) { |
460 | deregisterSession(md.getSessionInfo()); | 478 | deregisterSession(md.getSessionInfo()); |
461 | } | 479 | } |
462 | } else { | 480 | } else { |
@@ -466,7 +484,7 @@ public class DefaultTransportService implements TransportService { | @@ -466,7 +484,7 @@ public class DefaultTransportService implements TransportService { | ||
466 | } | 484 | } |
467 | 485 | ||
468 | @Override | 486 | @Override |
469 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.ToServerRpcRequestMsg msg, TransportServiceCallback<Void> callback) { | 487 | + public void process(SessionInfoProto sessionInfo, ToServerRpcRequestMsg msg, TransportServiceCallback<Void> callback) { |
470 | if (checkLimits(sessionInfo, msg, callback)) { | 488 | if (checkLimits(sessionInfo, msg, callback)) { |
471 | reportActivityInternal(sessionInfo); | 489 | reportActivityInternal(sessionInfo); |
472 | UUID sessionId = toSessionId(sessionInfo); | 490 | UUID sessionId = toSessionId(sessionInfo); |
@@ -482,10 +500,9 @@ public class DefaultTransportService implements TransportService { | @@ -482,10 +500,9 @@ public class DefaultTransportService implements TransportService { | ||
482 | metaData.putValue("requestId", Integer.toString(msg.getRequestId())); | 500 | metaData.putValue("requestId", Integer.toString(msg.getRequestId())); |
483 | metaData.putValue("serviceId", serviceInfoProvider.getServiceId()); | 501 | metaData.putValue("serviceId", serviceInfoProvider.getServiceId()); |
484 | metaData.putValue("sessionId", sessionId.toString()); | 502 | metaData.putValue("sessionId", sessionId.toString()); |
485 | - RuleChainId ruleChainId = resolveRuleChainId(sessionInfo); | ||
486 | - TbMsg tbMsg = TbMsg.newMsg(ServiceQueue.MAIN, SessionMsgType.TO_SERVER_RPC_REQUEST.name(), | ||
487 | - deviceId, metaData, gson.toJson(json), ruleChainId, null); | ||
488 | - sendToRuleEngine(tenantId, tbMsg, new TransportTbQueueCallback(callback)); | 503 | + |
504 | + sendToRuleEngine(tenantId, deviceId, sessionInfo, json, metaData, | ||
505 | + SessionMsgType.TO_SERVER_RPC_REQUEST, new TransportTbQueueCallback(callback)); | ||
489 | String requestId = sessionId + "-" + msg.getRequestId(); | 506 | String requestId = sessionId + "-" + msg.getRequestId(); |
490 | toServerRpcPendingMap.put(requestId, new RpcRequestMetadata(sessionId, msg.getRequestId())); | 507 | toServerRpcPendingMap.put(requestId, new RpcRequestMetadata(sessionId, msg.getRequestId())); |
491 | schedulerExecutor.schedule(() -> processTimeout(requestId), clientSideRpcTimeout, TimeUnit.MILLISECONDS); | 508 | schedulerExecutor.schedule(() -> processTimeout(requestId), clientSideRpcTimeout, TimeUnit.MILLISECONDS); |
@@ -493,7 +510,7 @@ public class DefaultTransportService implements TransportService { | @@ -493,7 +510,7 @@ public class DefaultTransportService implements TransportService { | ||
493 | } | 510 | } |
494 | 511 | ||
495 | @Override | 512 | @Override |
496 | - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.ClaimDeviceMsg msg, TransportServiceCallback<Void> callback) { | 513 | + public void process(SessionInfoProto sessionInfo, ClaimDeviceMsg msg, TransportServiceCallback<Void> callback) { |
497 | if (checkLimits(sessionInfo, msg, callback)) { | 514 | if (checkLimits(sessionInfo, msg, callback)) { |
498 | reportActivityInternal(sessionInfo); | 515 | reportActivityInternal(sessionInfo); |
499 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) | 516 | sendToDeviceActor(sessionInfo, TransportToDeviceActorMsg.newBuilder().setSessionInfo(sessionInfo) |
@@ -502,11 +519,11 @@ public class DefaultTransportService implements TransportService { | @@ -502,11 +519,11 @@ public class DefaultTransportService implements TransportService { | ||
502 | } | 519 | } |
503 | 520 | ||
504 | @Override | 521 | @Override |
505 | - public void reportActivity(TransportProtos.SessionInfoProto sessionInfo) { | 522 | + public void reportActivity(SessionInfoProto sessionInfo) { |
506 | reportActivityInternal(sessionInfo); | 523 | reportActivityInternal(sessionInfo); |
507 | } | 524 | } |
508 | 525 | ||
509 | - private SessionMetaData reportActivityInternal(TransportProtos.SessionInfoProto sessionInfo) { | 526 | + private SessionMetaData reportActivityInternal(SessionInfoProto sessionInfo) { |
510 | UUID sessionId = toSessionId(sessionInfo); | 527 | UUID sessionId = toSessionId(sessionInfo); |
511 | SessionMetaData sessionMetaData = sessions.get(sessionId); | 528 | SessionMetaData sessionMetaData = sessions.get(sessionId); |
512 | if (sessionMetaData != null) { | 529 | if (sessionMetaData != null) { |
@@ -519,7 +536,7 @@ public class DefaultTransportService implements TransportService { | @@ -519,7 +536,7 @@ public class DefaultTransportService implements TransportService { | ||
519 | long expTime = System.currentTimeMillis() - sessionInactivityTimeout; | 536 | long expTime = System.currentTimeMillis() - sessionInactivityTimeout; |
520 | sessions.forEach((uuid, sessionMD) -> { | 537 | sessions.forEach((uuid, sessionMD) -> { |
521 | long lastActivityTime = sessionMD.getLastActivityTime(); | 538 | long lastActivityTime = sessionMD.getLastActivityTime(); |
522 | - TransportProtos.SessionInfoProto sessionInfo = sessionMD.getSessionInfo(); | 539 | + SessionInfoProto sessionInfo = sessionMD.getSessionInfo(); |
523 | if (sessionInfo.getGwSessionIdMSB() > 0 && | 540 | if (sessionInfo.getGwSessionIdMSB() > 0 && |
524 | sessionInfo.getGwSessionIdLSB() > 0) { | 541 | sessionInfo.getGwSessionIdLSB() > 0) { |
525 | SessionMetaData gwMetaData = sessions.get(new UUID(sessionInfo.getGwSessionIdMSB(), sessionInfo.getGwSessionIdLSB())); | 542 | SessionMetaData gwMetaData = sessions.get(new UUID(sessionInfo.getGwSessionIdMSB(), sessionInfo.getGwSessionIdLSB())); |
@@ -531,13 +548,13 @@ public class DefaultTransportService implements TransportService { | @@ -531,13 +548,13 @@ public class DefaultTransportService implements TransportService { | ||
531 | if (log.isDebugEnabled()) { | 548 | if (log.isDebugEnabled()) { |
532 | log.debug("[{}] Session has expired due to last activity time: {}", toSessionId(sessionInfo), lastActivityTime); | 549 | log.debug("[{}] Session has expired due to last activity time: {}", toSessionId(sessionInfo), lastActivityTime); |
533 | } | 550 | } |
534 | - process(sessionInfo, getSessionEventMsg(TransportProtos.SessionEvent.CLOSED), null); | 551 | + process(sessionInfo, getSessionEventMsg(SessionEvent.CLOSED), null); |
535 | sessions.remove(uuid); | 552 | sessions.remove(uuid); |
536 | - sessionMD.getListener().onRemoteSessionCloseCommand(TransportProtos.SessionCloseNotificationProto.getDefaultInstance()); | 553 | + sessionMD.getListener().onRemoteSessionCloseCommand(SessionCloseNotificationProto.getDefaultInstance()); |
537 | } else { | 554 | } else { |
538 | if (lastActivityTime > sessionMD.getLastReportedActivityTime()) { | 555 | if (lastActivityTime > sessionMD.getLastReportedActivityTime()) { |
539 | final long lastActivityTimeFinal = lastActivityTime; | 556 | final long lastActivityTimeFinal = lastActivityTime; |
540 | - process(sessionInfo, TransportProtos.SubscriptionInfoProto.newBuilder() | 557 | + process(sessionInfo, SubscriptionInfoProto.newBuilder() |
541 | .setAttributeSubscription(sessionMD.isSubscribedToAttributes()) | 558 | .setAttributeSubscription(sessionMD.isSubscribedToAttributes()) |
542 | .setRpcSubscription(sessionMD.isSubscribedToRPC()) | 559 | .setRpcSubscription(sessionMD.isSubscribedToRPC()) |
543 | .setLastActivityTime(lastActivityTime).build(), new TransportServiceCallback<Void>() { | 560 | .setLastActivityTime(lastActivityTime).build(), new TransportServiceCallback<Void>() { |
@@ -557,12 +574,12 @@ public class DefaultTransportService implements TransportService { | @@ -557,12 +574,12 @@ public class DefaultTransportService implements TransportService { | ||
557 | } | 574 | } |
558 | 575 | ||
559 | @Override | 576 | @Override |
560 | - public void registerSyncSession(TransportProtos.SessionInfoProto sessionInfo, SessionMsgListener listener, long timeout) { | ||
561 | - SessionMetaData currentSession = new SessionMetaData(sessionInfo, TransportProtos.SessionType.SYNC, listener); | 577 | + public void registerSyncSession(SessionInfoProto sessionInfo, SessionMsgListener listener, long timeout) { |
578 | + SessionMetaData currentSession = new SessionMetaData(sessionInfo, SessionType.SYNC, listener); | ||
562 | sessions.putIfAbsent(toSessionId(sessionInfo), currentSession); | 579 | sessions.putIfAbsent(toSessionId(sessionInfo), currentSession); |
563 | 580 | ||
564 | ScheduledFuture executorFuture = schedulerExecutor.schedule(() -> { | 581 | ScheduledFuture executorFuture = schedulerExecutor.schedule(() -> { |
565 | - listener.onRemoteSessionCloseCommand(TransportProtos.SessionCloseNotificationProto.getDefaultInstance()); | 582 | + listener.onRemoteSessionCloseCommand(SessionCloseNotificationProto.getDefaultInstance()); |
566 | deregisterSession(sessionInfo); | 583 | deregisterSession(sessionInfo); |
567 | }, timeout, TimeUnit.MILLISECONDS); | 584 | }, timeout, TimeUnit.MILLISECONDS); |
568 | 585 | ||
@@ -570,7 +587,7 @@ public class DefaultTransportService implements TransportService { | @@ -570,7 +587,7 @@ public class DefaultTransportService implements TransportService { | ||
570 | } | 587 | } |
571 | 588 | ||
572 | @Override | 589 | @Override |
573 | - public void deregisterSession(TransportProtos.SessionInfoProto sessionInfo) { | 590 | + public void deregisterSession(SessionInfoProto sessionInfo) { |
574 | SessionMetaData currentSession = sessions.get(toSessionId(sessionInfo)); | 591 | SessionMetaData currentSession = sessions.get(toSessionId(sessionInfo)); |
575 | if (currentSession != null && currentSession.hasScheduledFuture()) { | 592 | if (currentSession != null && currentSession.hasScheduledFuture()) { |
576 | log.debug("Stopping scheduler to avoid resending response if request has been ack."); | 593 | log.debug("Stopping scheduler to avoid resending response if request has been ack."); |
@@ -583,12 +600,12 @@ public class DefaultTransportService implements TransportService { | @@ -583,12 +600,12 @@ public class DefaultTransportService implements TransportService { | ||
583 | private TransportRateLimitType[] TELEMETRY = TransportRateLimitType.values(); | 600 | private TransportRateLimitType[] TELEMETRY = TransportRateLimitType.values(); |
584 | 601 | ||
585 | @Override | 602 | @Override |
586 | - public boolean checkLimits(TransportProtos.SessionInfoProto sessionInfo, Object msg, TransportServiceCallback<Void> callback) { | 603 | + public boolean checkLimits(SessionInfoProto sessionInfo, Object msg, TransportServiceCallback<Void> callback) { |
587 | return checkLimits(sessionInfo, msg, callback, 0, DEFAULT); | 604 | return checkLimits(sessionInfo, msg, callback, 0, DEFAULT); |
588 | } | 605 | } |
589 | 606 | ||
590 | @Override | 607 | @Override |
591 | - public boolean checkLimits(TransportProtos.SessionInfoProto sessionInfo, Object msg, TransportServiceCallback<Void> callback, int dataPoints, TransportRateLimitType... limits) { | 608 | + public boolean checkLimits(SessionInfoProto sessionInfo, Object msg, TransportServiceCallback<Void> callback, int dataPoints, TransportRateLimitType... limits) { |
592 | if (log.isTraceEnabled()) { | 609 | if (log.isTraceEnabled()) { |
593 | log.trace("[{}] Processing msg: {}", toSessionId(sessionInfo), msg); | 610 | log.trace("[{}] Processing msg: {}", toSessionId(sessionInfo), msg); |
594 | } | 611 | } |
@@ -609,7 +626,7 @@ public class DefaultTransportService implements TransportService { | @@ -609,7 +626,7 @@ public class DefaultTransportService implements TransportService { | ||
609 | } | 626 | } |
610 | } | 627 | } |
611 | 628 | ||
612 | - protected void processToTransportMsg(TransportProtos.ToTransportMsg toSessionMsg) { | 629 | + protected void processToTransportMsg(ToTransportMsg toSessionMsg) { |
613 | UUID sessionId = new UUID(toSessionMsg.getSessionIdMSB(), toSessionMsg.getSessionIdLSB()); | 630 | UUID sessionId = new UUID(toSessionMsg.getSessionIdMSB(), toSessionMsg.getSessionIdLSB()); |
614 | SessionMetaData md = sessions.get(sessionId); | 631 | SessionMetaData md = sessions.get(sessionId); |
615 | if (md != null) { | 632 | if (md != null) { |
@@ -633,12 +650,12 @@ public class DefaultTransportService implements TransportService { | @@ -633,12 +650,12 @@ public class DefaultTransportService implements TransportService { | ||
633 | listener.onToServerRpcResponse(toSessionMsg.getToServerResponse()); | 650 | listener.onToServerRpcResponse(toSessionMsg.getToServerResponse()); |
634 | } | 651 | } |
635 | }); | 652 | }); |
636 | - if (md.getSessionType() == TransportProtos.SessionType.SYNC) { | 653 | + if (md.getSessionType() == SessionType.SYNC) { |
637 | deregisterSession(md.getSessionInfo()); | 654 | deregisterSession(md.getSessionInfo()); |
638 | } | 655 | } |
639 | } else { | 656 | } else { |
640 | if (toSessionMsg.hasEntityUpdateMsg()) { | 657 | if (toSessionMsg.hasEntityUpdateMsg()) { |
641 | - TransportProtos.EntityUpdateMsg msg = toSessionMsg.getEntityUpdateMsg(); | 658 | + EntityUpdateMsg msg = toSessionMsg.getEntityUpdateMsg(); |
642 | EntityType entityType = EntityType.valueOf(msg.getEntityType()); | 659 | EntityType entityType = EntityType.valueOf(msg.getEntityType()); |
643 | if (EntityType.DEVICE_PROFILE.equals(entityType)) { | 660 | if (EntityType.DEVICE_PROFILE.equals(entityType)) { |
644 | DeviceProfile deviceProfile = deviceProfileCache.put(msg.getData()); | 661 | DeviceProfile deviceProfile = deviceProfileCache.put(msg.getData()); |
@@ -659,7 +676,7 @@ public class DefaultTransportService implements TransportService { | @@ -659,7 +676,7 @@ public class DefaultTransportService implements TransportService { | ||
659 | } | 676 | } |
660 | } | 677 | } |
661 | } else if (toSessionMsg.hasEntityDeleteMsg()) { | 678 | } else if (toSessionMsg.hasEntityDeleteMsg()) { |
662 | - TransportProtos.EntityDeleteMsg msg = toSessionMsg.getEntityDeleteMsg(); | 679 | + EntityDeleteMsg msg = toSessionMsg.getEntityDeleteMsg(); |
663 | EntityType entityType = EntityType.valueOf(msg.getEntityType()); | 680 | EntityType entityType = EntityType.valueOf(msg.getEntityType()); |
664 | UUID entityUuid = new UUID(msg.getEntityIdMSB(), msg.getEntityIdLSB()); | 681 | UUID entityUuid = new UUID(msg.getEntityIdMSB(), msg.getEntityIdLSB()); |
665 | if (EntityType.DEVICE_PROFILE.equals(entityType)) { | 682 | if (EntityType.DEVICE_PROFILE.equals(entityType)) { |
@@ -690,29 +707,29 @@ public class DefaultTransportService implements TransportService { | @@ -690,29 +707,29 @@ public class DefaultTransportService implements TransportService { | ||
690 | }); | 707 | }); |
691 | } | 708 | } |
692 | 709 | ||
693 | - protected UUID toSessionId(TransportProtos.SessionInfoProto sessionInfo) { | 710 | + protected UUID toSessionId(SessionInfoProto sessionInfo) { |
694 | return new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB()); | 711 | return new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB()); |
695 | } | 712 | } |
696 | 713 | ||
697 | - protected UUID getRoutingKey(TransportProtos.SessionInfoProto sessionInfo) { | 714 | + protected UUID getRoutingKey(SessionInfoProto sessionInfo) { |
698 | return new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()); | 715 | return new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()); |
699 | } | 716 | } |
700 | 717 | ||
701 | - protected TenantId getTenantId(TransportProtos.SessionInfoProto sessionInfo) { | 718 | + protected TenantId getTenantId(SessionInfoProto sessionInfo) { |
702 | return new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); | 719 | return new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB())); |
703 | } | 720 | } |
704 | 721 | ||
705 | - protected DeviceId getDeviceId(TransportProtos.SessionInfoProto sessionInfo) { | 722 | + protected DeviceId getDeviceId(SessionInfoProto sessionInfo) { |
706 | return new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); | 723 | return new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); |
707 | } | 724 | } |
708 | 725 | ||
709 | - public static TransportProtos.SessionEventMsg getSessionEventMsg(TransportProtos.SessionEvent event) { | ||
710 | - return TransportProtos.SessionEventMsg.newBuilder() | ||
711 | - .setSessionType(TransportProtos.SessionType.ASYNC) | 726 | + public static SessionEventMsg getSessionEventMsg(SessionEvent event) { |
727 | + return SessionEventMsg.newBuilder() | ||
728 | + .setSessionType(SessionType.ASYNC) | ||
712 | .setEvent(event).build(); | 729 | .setEvent(event).build(); |
713 | } | 730 | } |
714 | 731 | ||
715 | - protected void sendToDeviceActor(TransportProtos.SessionInfoProto sessionInfo, TransportToDeviceActorMsg toDeviceActorMsg, TransportServiceCallback<Void> callback) { | 732 | + protected void sendToDeviceActor(SessionInfoProto sessionInfo, TransportToDeviceActorMsg toDeviceActorMsg, TransportServiceCallback<Void> callback) { |
716 | TopicPartitionInfo tpi = partitionService.resolve(ServiceType.TB_CORE, getTenantId(sessionInfo), getDeviceId(sessionInfo)); | 733 | TopicPartitionInfo tpi = partitionService.resolve(ServiceType.TB_CORE, getTenantId(sessionInfo), getDeviceId(sessionInfo)); |
717 | if (log.isTraceEnabled()) { | 734 | if (log.isTraceEnabled()) { |
718 | log.trace("[{}][{}] Pushing to topic {} message {}", getTenantId(sessionInfo), getDeviceId(sessionInfo), tpi.getFullTopicName(), toDeviceActorMsg); | 735 | log.trace("[{}][{}] Pushing to topic {} message {}", getTenantId(sessionInfo), getDeviceId(sessionInfo), tpi.getFullTopicName(), toDeviceActorMsg); |
@@ -740,17 +757,25 @@ public class DefaultTransportService implements TransportService { | @@ -740,17 +757,25 @@ public class DefaultTransportService implements TransportService { | ||
740 | ruleEngineMsgProducer.send(tpi, new TbProtoQueueMsg<>(tbMsg.getId(), msg), wrappedCallback); | 757 | ruleEngineMsgProducer.send(tpi, new TbProtoQueueMsg<>(tbMsg.getId(), msg), wrappedCallback); |
741 | } | 758 | } |
742 | 759 | ||
743 | - private RuleChainId resolveRuleChainId(TransportProtos.SessionInfoProto sessionInfo) { | 760 | + protected void sendToRuleEngine(TenantId tenantId, DeviceId deviceId, SessionInfoProto sessionInfo, JsonObject json, |
761 | + TbMsgMetaData metaData, SessionMsgType sessionMsgType, TbQueueCallback callback) { | ||
744 | DeviceProfileId deviceProfileId = new DeviceProfileId(new UUID(sessionInfo.getDeviceProfileIdMSB(), sessionInfo.getDeviceProfileIdLSB())); | 762 | DeviceProfileId deviceProfileId = new DeviceProfileId(new UUID(sessionInfo.getDeviceProfileIdMSB(), sessionInfo.getDeviceProfileIdLSB())); |
745 | DeviceProfile deviceProfile = deviceProfileCache.get(deviceProfileId); | 763 | DeviceProfile deviceProfile = deviceProfileCache.get(deviceProfileId); |
746 | RuleChainId ruleChainId; | 764 | RuleChainId ruleChainId; |
765 | + String queueName; | ||
766 | + | ||
747 | if (deviceProfile == null) { | 767 | if (deviceProfile == null) { |
748 | log.warn("[{}] Device profile is null!", deviceProfileId); | 768 | log.warn("[{}] Device profile is null!", deviceProfileId); |
749 | ruleChainId = null; | 769 | ruleChainId = null; |
770 | + queueName = ServiceQueue.MAIN; | ||
750 | } else { | 771 | } else { |
751 | ruleChainId = deviceProfile.getDefaultRuleChainId(); | 772 | ruleChainId = deviceProfile.getDefaultRuleChainId(); |
773 | + String defaultQueueName = deviceProfile.getDefaultQueueName(); | ||
774 | + queueName = defaultQueueName != null ? defaultQueueName : ServiceQueue.MAIN; | ||
752 | } | 775 | } |
753 | - return ruleChainId; | 776 | + |
777 | + TbMsg tbMsg = TbMsg.newMsg(queueName, sessionMsgType.name(), deviceId, metaData, gson.toJson(json), ruleChainId, null); | ||
778 | + sendToRuleEngine(tenantId, tbMsg, callback); | ||
754 | } | 779 | } |
755 | 780 | ||
756 | private class TransportTbQueueCallback implements TbQueueCallback { | 781 | private class TransportTbQueueCallback implements TbQueueCallback { |