Commit df133e48fffee8d66c8df9338471bc5d22a9693f

Authored by YevhenBondarenko
Committed by Andrew Shvayka
1 parent 7724495c

DefaultTransportService refactored

@@ -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 {