use of com.vaticle.typedb.core.reasoner.resolution.resolver.ConcludableResolver in project grakn by graknlabs.
the class ResolverRegistry method registerConcludable.
// note: must be thread safe. We could move to a ConcurrentHashMap if we create an alpha-equivalence wrapper
private synchronized ResolverView.MappedConcludable registerConcludable(Concludable concludable) {
LOG.debug("Register ConcludableResolver: '{}'", concludable.pattern());
for (Map.Entry<Concludable, Actor.Driver<ConcludableResolver>> c : concludableResolvers.entrySet()) {
// TODO: This needs to be optimised from a linear search to use an alpha hash
AlphaEquivalence alphaEquality = concludable.alphaEquals(c.getKey());
if (alphaEquality.isValid()) {
return ResolverView.concludable(c.getValue(), alphaEquality.asValid().idMapping());
}
}
Actor.Driver<ConcludableResolver> resolver = Actor.driver(driver -> new ConcludableResolver(driver, concludable, this, traversalEngine, conceptMgr, logicMgr, resolutionTracing), executorService);
concludableResolvers.put(concludable, resolver);
resolvers.add(resolver);
// guard races without synchronized
if (terminated.get())
throw TypeDBException.of(RESOLUTION_TERMINATED);
return ResolverView.concludable(resolver, identity(concludable));
}
Aggregations