/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.routing.internal.v2;
import java.util.Map;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
/**
* Listener for {@link LinkState} knowledge changes.
*
* @author Robert Mischke
*/
public interface LinkStateKnowledgeChangeListener {
/**
* Called when the accumulated knowledge of {@link LinkState}s is modified. The map and the contained {@link LinkState} objects are
* immutable, so all access is thread-safe.
*
* This event is also fired for each new listener on subscription.
*
* @param knowledge the map of all known {@link LinkState}s
*/
void onLinkStateKnowledgeChanged(Map<InstanceNodeSessionId, LinkState> knowledge);
/**
* Called when {@link LinkState}s are added or updated. The map and the contained {@link LinkState} objects are immutable, so all access
* is thread-safe.
*
* @param delta the map of added or updated {@link LinkState}s
*/
void onLinkStatesUpdated(Map<InstanceNodeSessionId, LinkState> delta);
/**
* Reports that the local node's {@link LinkState} has been updated.
*
* @param linkState the new local {@link LinkState}
*/
void onLocalLinkStateUpdated(LinkState linkState);
}