package cloudone.cumulonimbus.model;
import cloudone.ServiceFullName;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* Entity for registered service runtime.
*
* @author Martin Mares (martin.mares at oracle.com)
*/
public class RegisteredRuntime {
private ServiceFullName serviceName;
private String instanceSecCode;
private int instanceId;
private int adminPort;
private transient long lastTouch = -1;
private Map<String, Integer> applicationPorts = new HashMap<>();
public RegisteredRuntime(ServiceFullName serviceName,
String instanceSecCode,
int instanceId,
int adminPort,
Map<String, Integer> applicationPorts) {
this.serviceName = serviceName;
this.instanceSecCode = instanceSecCode;
this.instanceId = instanceId;
this.adminPort = adminPort;
this.applicationPorts.putAll(applicationPorts);
}
public ServiceFullName getServiceName() {
return serviceName;
}
public String getInstanceSecCode() {
return instanceSecCode;
}
public int getInstanceId() {
return instanceId;
}
public long getLastTouch() {
return lastTouch;
}
public void touch() {
lastTouch = System.currentTimeMillis();
}
public int getAdminPort() {
return adminPort;
}
public Map<String, Integer> getApplicationPorts() {
return Collections.unmodifiableMap(applicationPorts);
}
public int getApplicationPort(String appName) {
Integer result = applicationPorts.get(appName);
if (result == null) {
return -1;
} else {
return result;
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof RegisteredRuntime)) return false;
RegisteredRuntime that = (RegisteredRuntime) o;
if (adminPort != that.adminPort) return false;
if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false;
if (instanceSecCode != null ? !instanceSecCode.equals(that.instanceSecCode) : that.instanceSecCode != null) return false;
return !(applicationPorts != null ? !applicationPorts.equals(that.applicationPorts) : that.applicationPorts != null);
}
@Override
public int hashCode() {
int result = serviceName != null ? serviceName.hashCode() : 0;
result = 31 * result + (instanceSecCode != null ? instanceSecCode.hashCode() : 0);
result = 31 * result + adminPort;
result = 31 * result + (applicationPorts != null ? applicationPorts.hashCode() : 0);
return result;
}
public String toRuntimeName() {
return serviceName + "::" + instanceId;
}
@Override
public String toString() {
return "RegisteredRuntime{" +
"serviceName=" + serviceName +
", instanceId=" + instanceId +
", adminPort=" + adminPort +
", lastTouch=" + lastTouch +
", applicationPorts=" + applicationPorts +
'}';
}
}