/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.workflow.execution.api;
import de.rcenvironment.core.component.execution.api.ConsoleRow;
/**
* Provides central access to the information provided by received {@link ConsoleRow} instances. This includes the rows themselves, as well
* as derived workflow and component information.
*
* @author Robert Mischke
*/
public interface ConsoleRowModelService {
/**
* The sequence id to use for querying if no previous sequence id is available.
*/
int INITIAL_SEQUENCE_ID = 0;
/**
* Returns a new {@link ConsoleModelSnapshot} of the current model state if the model was modified since the given sequence id. The
* typical source of this sequence id is calling getSequenceId() on a previously returned snapshot. If no change has occured, this
* method returns null.
*
* @param sequenceId the last sequence id known to the caller
* @return a new model snapshot, or null if no change has occured since the given sequence id
*/
ConsoleModelSnapshot getSnapshotIfModifiedSince(int sequenceId);
/**
* Set the new {@link ConsoleRowFilter} for building future snapshots. Null is not permitted; set a permissive filter instead.
*
* @param newFilter the new {@link ConsoleRowFilter}
*/
void setRowFilter(ConsoleRowFilter newFilter);
/**
* FIXME temporary bridge method; move to inside.
*/
void updateSubscriptions();
/**
* FIXME this should not be allowed for a central service; rework.
*/
void clearAll();
/**
* Ensures that the console model is registered to listen for console output.
*
* @throws InterruptedException on thread interruption
*/
void ensureConsoleCaptureIsInitialized() throws InterruptedException;
}