package org.juxtapose.streamline.stm;
import java.util.HashSet;
import java.util.Map;
import org.juxtapose.streamline.producer.ISTMEntryKey;
import org.juxtapose.streamline.producer.ISTMEntryProducer;
import org.juxtapose.streamline.producer.ISTMEntryProducerService;
import org.juxtapose.streamline.producer.executor.IExecutor;
import org.juxtapose.streamline.util.ISTMEntry;
import org.juxtapose.streamline.util.ISTMEntryRequestSubscriber;
import org.juxtapose.streamline.util.ISTMEntrySubscriber;
import org.juxtapose.streamline.util.ISTMRequestor;
import org.juxtapose.streamline.util.Status;
import org.juxtapose.streamline.util.data.DataType;
import com.trifork.clj_ds.IPersistentMap;
public interface ISTM extends IExecutor
{
public void registerProducer( final ISTMEntryProducerService inProducerService, final Status initState );
public void updateProducerStatus( final ISTMEntryProducerService inProducerService, final Status newStatus );
public void subscribeToData( ISTMEntryKey inDataKey, ISTMEntrySubscriber inSubscriber );
public void unsubscribeToData( ISTMEntryKey inDataKey, ISTMEntrySubscriber inSubscriber );
public void publish( ISTMEntryKey inDataKey, ISTMEntryProducer inProducer, Status inStatus, IPersistentMap<String, DataType<?>> inData, HashSet<String> inDeltaSet );
public void commit( STMTransaction inTransaction );
public void getDataKey(String inProducerService, ISTMEntryRequestSubscriber inSubscriber, Object inTag, Map<String, String> inQuery);
public void logInfo( String inMessage );
public void logError( String inMessage );
public void logError( String inMessage, Throwable inThrowable );
public void logWarning( String inMessage );
public void logDebug( String inMessage );
public ISTMEntry createEmptyData( Status inStatus, ISTMEntryProducer inProducer, ISTMEntrySubscriber inSubscriber );
public ISTMEntry getData( String inKey );
public void updateSubscriberPriority( ISTMEntryKey inDataKey, ISTMEntrySubscriber inSubscriber );
public void request( String inService, int inTag, long inType, ISTMRequestor inRequestor, String inVariable, IPersistentMap<String, DataType<?>> inData );
}