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)) {
|
|
||||||
return Optional.of(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
|
|
||||||
() -> DefaultActorService.TENANT_DISPATCHER_NAME,
|
() -> DefaultActorService.TENANT_DISPATCHER_NAME,
|
||||||
() -> new TenantActor.ActorCreator(systemContext, tenantId)));
|
() -> new TenantActor.ActorCreator(systemContext, tenantId),
|
||||||
} else {
|
() -> systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
|
||||||
return Optional.empty();
|
systemContext.getPartitionService().isManagedByCurrentService(tenantId)));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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