/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.common;
/**
* An identifier of an abstract instance in a (potentially decentralized) network. {@link InstanceNodeId} are typically persistent, but are
* not required to be.
* <p>
* In an {@link InstanceNodeId}, the "instance" part is always defined and {@link CommonIdBase#INSTANCE_PART_LENGTH} characters long, while
* the "session" and "logical node" parts are always null.
*
* @author Robert Mischke
*/
public interface InstanceNodeId extends CommonIdBase, ResolvableNodeId {
/**
* @return the default {@link LogicalNodeId} for this instance session; may or may not return the same object on repeated calls
*/
LogicalNodeId convertToDefaultLogicalNodeId();
/**
* @return a new {@link LogicalNodeId} with the same instance id part as this {@link InstanceNodeId}, and the given logical node part.
* @param nodeIdPart the node id part to use
*/
LogicalNodeId expandToLogicalNodeId(String nodeIdPart);
}