/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.channel; import java.util.Set; import de.rcenvironment.core.communication.transport.spi.MessageChannel; /** * Callback interface for connection-related events. The events of this interface are meant to be produced by the <b>connection</b> layer, * and consumed/listened to by layers above (mostly, the topology/routing layer). * * @author Robert Mischke */ public interface MessageChannelLifecycleListener { /** * Initial callback to synchronize listeners with the current set of {@link MessageChannel}s. * * @param currentChannels the current set of {@link MessageChannel}s */ void setInitialMessageChannels(Set<MessageChannel> currentChannels); /** * Indicates that a new <b>logical</b> connection has been established to a remote node. This may or may not reflect a new underlying * network connection. Especially, "passive" logical connections are typically established over an already-existing network connection * that was initiated by the remote node before. When these are established, this event is fired on the node that is the <b>receiver</b> * of the actual network connection. * * This event is meant to be fired <b>after</b> the initial (transport-specific) handshake has been completed. * * TODO use "link" or network vs. logical connection terminology for clarity? -- misc_ro * * @param connection the established connection */ void onOutgoingChannelEstablished(MessageChannel connection); /** * Indicates that a connection was closed/terminated. This might reflect either a controlled shutdown, or a connection breakdown. * * @param connection the connection that should no longer be considered usable */ // note: add a "cause" parameter if necessary - misc_ro void onOutgoingChannelTerminated(MessageChannel connection); }