private void PropagateRetractInternal(IExecutionContext context, IBetaMemory memory, List <Tuple> tuples) { if (tuples.Count > 0) { foreach (var sink in _sinks) { sink.PropagateRetract(context, tuples); } foreach (var childTuple in tuples) { memory.Remove(childTuple); } } }
public void PropagateRetract(IExecutionContext context, Tuple tuple, Fact fact) { IBetaMemory memory = context.WorkingMemory.GetNodeMemory(this); Tuple childTuple = memory.FindTuple(tuple, fact); if (childTuple != null) { foreach (var sink in _sinks) { sink.PropagateRetract(context, childTuple); } memory.Remove(childTuple); } }
private void PropagateRetractInternal(IExecutionContext context, IBetaMemory memory, List <Tuple> tuples) { if (tuples.Count > 0) { using (var counter = PerfCounter.Retract(context, this)) { memory.Remove(tuples); counter.SetCount(memory.TupleCount); } for (int i = _sinks.Count - 1; i >= 0; i--) { _sinks[i].PropagateRetract(context, tuples); } } }