/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.management;
import java.util.Set;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
import de.rcenvironment.core.communication.common.LogicalNodeId;
/**
* A service that keeps track of reachable "workflow host" nodes, and publishes the local node's "workflow host" state.
*
* @author Robert Mischke
*/
// FIXME temporary package location to simplify migration; move to "de.rcenvironment.core.component.workflow.api"
// when complete - misc_ro
public interface WorkflowHostService {
// TODO (p3) >=8.0.0 improve JavaDoc for method variants (if both are kept)
/**
* Returns all reachable nodes (see {@link CommunicationService#getReachableNodes(boolean)) that have declared themselves to be a
* "workflow host", ie those that declare themselves available to act as a workflow controller.
*
* @return the set of all reachable workflow host nodes
*/
Set<InstanceNodeSessionId> getWorkflowHostNodes();
/**
* Returns all reachable nodes (see {@link CommunicationService#getReachableNodes(boolean)) that have declared themselves to be a
* "workflow host", ie those that declare themselves available to act as a workflow controller.
*
* @return the set of all reachable workflow host nodes
*/
Set<LogicalNodeId> getLogicalWorkflowHostNodes();
/**
* Convenience method that returns the result of {@link #getWorkflowHostNodes()}, plus the id of the local node if it is not already
* present.
*
* @return the merged set of all reachable workflow host nodes and the local node
*/
Set<InstanceNodeSessionId> getWorkflowHostNodesAndSelf();
/**
* Convenience method that returns the result of {@link #getWorkflowHostNodes()}, plus the id of the local node if it is not already
* present.
*
* @return the merged set of all reachable workflow host nodes and the local node
*/
Set<LogicalNodeId> getLogicalWorkflowHostNodesAndSelf();
}