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) {
|
||||
if (systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
|
||||
systemContext.getPartitionService().isManagedByCurrentService(tenantId)) {
|
||||
return Optional.of(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
|
||||
() -> DefaultActorService.TENANT_DISPATCHER_NAME,
|
||||
() -> new TenantActor.ActorCreator(systemContext, tenantId)));
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
return Optional.ofNullable(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
|
||||
() -> DefaultActorService.TENANT_DISPATCHER_NAME,
|
||||
() -> new TenantActor.ActorCreator(systemContext, tenantId),
|
||||
() -> systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
|
||||
systemContext.getPartitionService().isManagedByCurrentService(tenantId)));
|
||||
}
|
||||
|
||||
private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
|
||||
|
||||
@ -167,7 +167,8 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
|
||||
private TbActorRef createRuleNodeActor(TbActorCtx ctx, RuleNode ruleNode) {
|
||||
return ctx.getOrCreateChildActor(new TbEntityActorId(ruleNode.getId()),
|
||||
() -> 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) {
|
||||
|
||||
@ -94,7 +94,8 @@ public abstract class RuleChainManagerActor extends ContextAwareActor {
|
||||
} else {
|
||||
return new RuleChainActor.ActorCreator(systemContext, tenantId, ruleChain);
|
||||
}
|
||||
});
|
||||
},
|
||||
() -> true);
|
||||
}
|
||||
|
||||
protected TbActorRef getEntityActorRef(EntityId entityId) {
|
||||
|
||||
@ -274,7 +274,8 @@ public class TenantActor extends RuleChainManagerActor {
|
||||
private TbActorRef getOrCreateDeviceActor(DeviceId deviceId) {
|
||||
return ctx.getOrCreateChildActor(new TbEntityActorId(deviceId),
|
||||
() -> DefaultActorService.DEVICE_DISPATCHER_NAME,
|
||||
() -> new DeviceActorCreator(systemContext, tenantId, deviceId));
|
||||
() -> new DeviceActorCreator(systemContext, tenantId, deviceId),
|
||||
() -> true);
|
||||
}
|
||||
|
||||
private void onToEdgeSessionMsg(EdgeSessionMsg msg) {
|
||||
|
||||
@ -32,7 +32,7 @@ public interface TbActorCtx extends TbActorRef {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@ -214,9 +214,9 @@ public final class TbActorMailbox implements TbActorCtx {
|
||||
}
|
||||
|
||||
@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);
|
||||
if (actorRef == null) {
|
||||
if (actorRef == null && createCondition.get()) {
|
||||
return system.createChildActor(dispatcher.get(), creator.get(), selfId);
|
||||
} else {
|
||||
return actorRef;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user