/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.spi; import java.util.Set; import de.rcenvironment.core.communication.common.NetworkGraph; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; /** * Listener interface for topology changes. The main events triggering topology changes are nodes entering or leaving the network. * Additionally, existing nodes may create new connections, or existing connections may disappear. * * Typically, new listeners will receive a custom {@link #onReachableNodesChanged()} callback on subscription that allows them to 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. * * @author Robert Mischke */ public interface NetworkTopologyChangeListener { /** * Signals that the known network topology has changed. */ void onNetworkTopologyChanged(); /** * Signals that the topology of the reachable network has changed. * * @param networkGraph the new network graph representation */ void onReachableNetworkChanged(NetworkGraph networkGraph); /** * Reports a change to the set of reachable nodes. As a convenience, the difference to the previous state is provided as well. * * @param reachableNodes the new set of reachable nodes * @param addedNodes nodes that have been added by this change * @param removedNodes nodes that have been removed by this change */ void onReachableNodesChanged(Set<InstanceNodeSessionId> reachableNodes, Set<InstanceNodeSessionId> addedNodes, Set<InstanceNodeSessionId> removedNodes); }