/*
* 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.spi.NetworkTopologyChangeListener;
/**
* Reports changes to the set of reachable nodes that have declared themselves to be "workflow hosts".
*
* @author Robert Mischke
*/
// FIXME temporary package location to simplify migration; move to "de.rcenvironment.core.component.workflow.spi"
// when complete - misc_ro
public interface WorkflowHostSetListener {
/**
* Reports a change to the set of reachable "workflow host" nodes. As a convenience, the difference to the previous state is provided as
* well.
*
* Typically, new listeners will receive a custom {@link #onReachableWorkflowHostsChanged()} callback on subscription that allows them
* to easily initialize to the current observed state. From the listener's perspective, the call will contain parameters as if the last
* observed set of nodes was empty, and all current nodes just became available.
*
* Note that this listener interface is intentionally similar to {@link NetworkTopologyChangeListener}, as their behaviour is almost the
* same, except that the sets reported by this listener have filtering applied to them.
*
* @param reachableWfHosts the new set of reachable workflow host nodes
* @param addedWfHosts workflow host nodes that have been added by this change
* @param removedWfHosts workflow host nodes that have been removed by this change
*/
void onReachableWorkflowHostsChanged(Set<InstanceNodeSessionId> reachableWfHosts, Set<InstanceNodeSessionId> addedWfHosts,
Set<InstanceNodeSessionId> removedWfHosts);
}