Esempio n. 1
0
        Task INodeMemory.Access <T>(NodeMemoryAccessor <T> accessor)
        {
            var memoryAccess = accessor as NodeMemoryAccessor <IAlphaMemory <TFact> >;

            if (memoryAccess == null)
            {
                throw new ArgumentException($"The memory type is invalid: {typeof(IAlphaMemory<TFact>)}", nameof(memoryAccess));
            }

            return(Task.Factory.StartNew(() => memoryAccess(this), CancellationToken.None, TaskCreationOptions.None, _scheduler));
        }
Esempio n. 2
0
        Task IAlphaMemoryMap.Access <T>(IAlphaMemoryNode <T> node, NodeMemoryAccessor <IAlphaMemory <T> > accessor)
        {
            var memory = _memories.GetOrAdd(node, add => new AlphaMemory <T>(_loggerFactory));

            return(memory.Access(accessor));
        }
Esempio n. 3
0
        Task IBetaMemoryMap.Access <T>(IBetaMemoryNode <T> node, NodeMemoryAccessor <IBetaMemory <T> > accessor)
        {
            var memory = _memories.GetOrAdd(node, add => new BetaMemory <T>());

            return(memory.Access(accessor));
        }
Esempio n. 4
0
 Task IWorkingMemory.Access <TRight>(IBetaMemoryNode <TRight> node, NodeMemoryAccessor <IBetaMemory <TRight> > accessor)
 {
     return(_betaMemories.Access(node, accessor));
 }
Esempio n. 5
0
 Task IWorkingMemory.Access <T>(IAlphaMemoryNode <T> node, NodeMemoryAccessor <IAlphaMemory <T> > accessor)
 {
     return(_alphaMemories.Access(node, accessor));
 }