/**
* 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);
}