package com.zillabyte.motherbrain.flow.collectors; import java.util.List; import java.util.Set; import com.google.common.collect.SetMultimap; import com.zillabyte.motherbrain.flow.MapTuple; import com.zillabyte.motherbrain.flow.collectors.coordinated.ObserveIncomingTupleAction; import com.zillabyte.motherbrain.flow.operations.Operation; import com.zillabyte.motherbrain.flow.operations.OperationException; import com.zillabyte.motherbrain.relational.DefaultStreamException; public interface OutputCollector { public void emit(String streamName, MapTuple t) throws OperationException; public void emit(MapTuple t) throws OperationException; public void observeIncomingTuple(MapTuple tuple); public void onAfterTuplesEmitted() throws OperationException; public void resetCounter(); public long getCounter(); public Operation getOperation(); public void configure(Object context); public String getDefaultStream() throws DefaultStreamException; public void emitDirect(Integer taskId, String streamId, List<?> rawTuple); public List<Integer> emitAndGetTasks(String streamName, MapTuple t) throws OperationException; public Integer getThisTask(Object context); public void constructTaskOperationInfo(Object context); public SetMultimap<String, Integer> getTaskOperationMap(); public Set<Integer> getAllTasks(); public Set<Integer> getAdjacentDownStreamTasks(); public Set<Integer> getAdjacentUpStreamNonLoopTasks(); public ObserveIncomingTupleAction observePreQueuedCoordTuple(Object tuple, Integer originTask) throws OperationException; public ObserveIncomingTupleAction observePostQueuedCoordTuple(Object tuple, Integer sourceTask) throws OperationException; public long getConsumeCount(); public long getEmitCount(); public long getAckCount(); public long getFailCount(); public long getCoordEmitCount(); public long getCoordConsumeCount(); public void handleChecks(); public boolean inPressureState(); public Object getCurrentBatch(); }