/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.reteoo; import java.io.Externalizable; import org.drools.common.BaseNode; import org.drools.common.InternalFactHandle; import org.drools.common.InternalWorkingMemory; import org.drools.spi.PropagationContext; public interface LeftTupleSinkPropagator extends Externalizable { public void createChildLeftTuplesforQuery(final LeftTuple leftTuple, final RightTuple rightTuple, boolean leftTupleMemoryEnabled); public void propagateAssertLeftTuple(LeftTuple leftTuple, RightTuple rightTuple, LeftTuple currentLeftChild, // insert new tuple before this child in the child list LeftTuple currentRightChild, // insert new tuple before this child in the child list PropagationContext context, InternalWorkingMemory workingMemory, boolean leftTupleMemoryEnabled); public void propagateAssertLeftTuple(LeftTuple tuple, PropagationContext context, InternalWorkingMemory workingMemory, boolean leftTupleMemoryEnabled); public void createAndPropagateAssertLeftTuple(InternalFactHandle factHandle, PropagationContext context, InternalWorkingMemory workingMemory, boolean leftTupleWorkingMemoryEnabled); public void propagateRetractLeftTuple(LeftTuple tuple, PropagationContext context, InternalWorkingMemory workingMemory); public void propagateRetractLeftTupleDestroyRightTuple(LeftTuple tuple, PropagationContext context, InternalWorkingMemory workingMemory); public void propagateRetractRightTuple(RightTuple tuple, PropagationContext context, InternalWorkingMemory workingMemory); public void doPropagateAssertLeftTuple(PropagationContext context, InternalWorkingMemory workingMemory, LeftTuple leftTuple, LeftTupleSink sink); public BaseNode getMatchingNode(BaseNode candidate); public LeftTupleSink[] getSinks(); // public void propagateNewTupleSink(TupleMatch tupleMatch, // PropagationContext context, // InternalWorkingMemory workingMemory); // // public void propagateNewTupleSink(InternalFactHandle handle, // LinkedList list, // PropagationContext context, // InternalWorkingMemory workingMemory); // // public void propagateNewTupleSink(ReteTuple tuple, // PropagationContext context, // InternalWorkingMemory workingMemory); // // public List getPropagatedTuples(final Map memory, // final InternalWorkingMemory workingMemory, // final TupleSink sink); public int size(); // related to true modify public void propagateModifyObject(InternalFactHandle factHandle, ModifyPreviousTuples modifyPreviousTuples, PropagationContext context, InternalWorkingMemory workingMemory); public LeftTuple propagateModifyChildLeftTuple(LeftTuple childLeftTuple, RightTuple parentRightTuple, PropagationContext context, InternalWorkingMemory workingMemory, boolean tupleMemoryEnabled); public LeftTuple propagateModifyChildLeftTuple(LeftTuple childLeftTuple, LeftTuple parentLeftTuple, PropagationContext context, InternalWorkingMemory workingMemory, boolean tupleMemoryEnabled); public void propagateModifyChildLeftTuple(LeftTuple leftTuple, PropagationContext context, InternalWorkingMemory workingMemory, boolean tupleMemoryEnabled); public LeftTuple propagateRetractChildLeftTuple(LeftTuple childLeftTuple, RightTuple parentRightTuple, PropagationContext context, InternalWorkingMemory workingMemory); public LeftTuple propagateRetractChildLeftTuple(LeftTuple childLeftTuple, LeftTuple parentLeftTuple, PropagationContext context, InternalWorkingMemory workingMemory); }