package com.netflix.eureka.cluster; import com.netflix.appinfo.InstanceInfo; import com.netflix.appinfo.InstanceInfo.InstanceStatus; import com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl.Action; /** * Base {@link ReplicationTask} class for instance related replication requests. * * @author Tomasz Bak */ public abstract class InstanceReplicationTask extends ReplicationTask { /** * For cancel request there may be no InstanceInfo object available so we need to store app/id pair * explicitly. */ private final String appName; private final String id; private final InstanceInfo instanceInfo; private final InstanceStatus overriddenStatus; private final boolean replicateInstanceInfo; protected InstanceReplicationTask(String peerNodeName, Action action, String appName, String id) { super(peerNodeName, action); this.appName = appName; this.id = id; this.instanceInfo = null; this.overriddenStatus = null; this.replicateInstanceInfo = false; } protected InstanceReplicationTask(String peerNodeName, Action action, InstanceInfo instanceInfo, InstanceStatus overriddenStatus, boolean replicateInstanceInfo) { super(peerNodeName, action); this.appName = instanceInfo.getAppName(); this.id = instanceInfo.getId(); this.instanceInfo = instanceInfo; this.overriddenStatus = overriddenStatus; this.replicateInstanceInfo = replicateInstanceInfo; } public String getTaskName() { return appName + '/' + id + ':' + action + '@' + peerNodeName; } public String getAppName() { return appName; } public String getId() { return id; } public InstanceInfo getInstanceInfo() { return instanceInfo; } public InstanceStatus getOverriddenStatus() { return overriddenStatus; } public boolean shouldReplicateInstanceInfo() { return replicateInstanceInfo; } }