Add createCondition to TbActorCtx
This commit is contained in:
		
							parent
							
								
									b8a7c6a3cd
								
							
						
					
					
						commit
						97e9f43f65
					
				@ -198,14 +198,11 @@ public class AppActor extends ContextAwareActor {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Optional<TbActorRef> getOrCreateTenantActor(TenantId tenantId) {
 | 
					    private Optional<TbActorRef> getOrCreateTenantActor(TenantId tenantId) {
 | 
				
			||||||
        if (systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
 | 
					        return Optional.ofNullable(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
 | 
				
			||||||
                systemContext.getPartitionService().isManagedByCurrentService(tenantId)) {
 | 
					                () -> DefaultActorService.TENANT_DISPATCHER_NAME,
 | 
				
			||||||
            return Optional.of(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
 | 
					                () -> new TenantActor.ActorCreator(systemContext, tenantId),
 | 
				
			||||||
                    () -> DefaultActorService.TENANT_DISPATCHER_NAME,
 | 
					                () -> systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
 | 
				
			||||||
                    () -> new TenantActor.ActorCreator(systemContext, tenantId)));
 | 
					                        systemContext.getPartitionService().isManagedByCurrentService(tenantId)));
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return Optional.empty();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
 | 
					    private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
 | 
				
			||||||
 | 
				
			|||||||
@ -167,7 +167,8 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
 | 
				
			|||||||
    private TbActorRef createRuleNodeActor(TbActorCtx ctx, RuleNode ruleNode) {
 | 
					    private TbActorRef createRuleNodeActor(TbActorCtx ctx, RuleNode ruleNode) {
 | 
				
			||||||
        return ctx.getOrCreateChildActor(new TbEntityActorId(ruleNode.getId()),
 | 
					        return ctx.getOrCreateChildActor(new TbEntityActorId(ruleNode.getId()),
 | 
				
			||||||
                () -> DefaultActorService.RULE_DISPATCHER_NAME,
 | 
					                () -> DefaultActorService.RULE_DISPATCHER_NAME,
 | 
				
			||||||
                () -> new RuleNodeActor.ActorCreator(systemContext, tenantId, entityId, ruleChainName, ruleNode.getId()));
 | 
					                () -> new RuleNodeActor.ActorCreator(systemContext, tenantId, entityId, ruleChainName, ruleNode.getId()),
 | 
				
			||||||
 | 
					                () -> true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void initRoutes(RuleChain ruleChain, List<RuleNode> ruleNodeList) {
 | 
					    private void initRoutes(RuleChain ruleChain, List<RuleNode> ruleNodeList) {
 | 
				
			||||||
 | 
				
			|||||||
@ -94,7 +94,8 @@ public abstract class RuleChainManagerActor extends ContextAwareActor {
 | 
				
			|||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        return new RuleChainActor.ActorCreator(systemContext, tenantId, ruleChain);
 | 
					                        return new RuleChainActor.ActorCreator(systemContext, tenantId, ruleChain);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                },
 | 
				
			||||||
 | 
					                () -> true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected TbActorRef getEntityActorRef(EntityId entityId) {
 | 
					    protected TbActorRef getEntityActorRef(EntityId entityId) {
 | 
				
			||||||
 | 
				
			|||||||
@ -274,7 +274,8 @@ public class TenantActor extends RuleChainManagerActor {
 | 
				
			|||||||
    private TbActorRef getOrCreateDeviceActor(DeviceId deviceId) {
 | 
					    private TbActorRef getOrCreateDeviceActor(DeviceId deviceId) {
 | 
				
			||||||
        return ctx.getOrCreateChildActor(new TbEntityActorId(deviceId),
 | 
					        return ctx.getOrCreateChildActor(new TbEntityActorId(deviceId),
 | 
				
			||||||
                () -> DefaultActorService.DEVICE_DISPATCHER_NAME,
 | 
					                () -> DefaultActorService.DEVICE_DISPATCHER_NAME,
 | 
				
			||||||
                () -> new DeviceActorCreator(systemContext, tenantId, deviceId));
 | 
					                () -> new DeviceActorCreator(systemContext, tenantId, deviceId),
 | 
				
			||||||
 | 
					                () -> true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
 | 
					    private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
 | 
				
			||||||
 | 
				
			|||||||
@ -32,7 +32,7 @@ public interface TbActorCtx extends TbActorRef {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void stop(TbActorId target);
 | 
					    void stop(TbActorId target);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator);
 | 
					    TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator, Supplier<Boolean> createCondition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void broadcastToChildren(TbActorMsg msg);
 | 
					    void broadcastToChildren(TbActorMsg msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -214,9 +214,9 @@ public final class TbActorMailbox implements TbActorCtx {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator) {
 | 
					    public TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator, Supplier<Boolean> createCondition) {
 | 
				
			||||||
        TbActorRef actorRef = system.getActor(actorId);
 | 
					        TbActorRef actorRef = system.getActor(actorId);
 | 
				
			||||||
        if (actorRef == null) {
 | 
					        if (actorRef == null && createCondition.get()) {
 | 
				
			||||||
            return system.createChildActor(dispatcher.get(), creator.get(), selfId);
 | 
					            return system.createChildActor(dispatcher.get(), creator.get(), selfId);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return actorRef;
 | 
					            return actorRef;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user