package cz.cuni.mff.d3s.been.core.service;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* This object stores information about service in cluster.
*
* @author donarus
*/
public final class ServiceInfo implements Serializable {
private final String uuid;
private final Map<String, Object> params;
private final String serviceName;
private ServiceState serviceState;
private String stateReason;
private String serviceInfo;
private String hazelcastUuid;
/**
* Creates new ServiceInfo.
*
* @param serviceName
* name of the service
* @param uuid
* Hazelcast ID of the service
*/
public ServiceInfo(String serviceName, String uuid) {
this.serviceName = serviceName;
this.uuid = uuid;
this.params = new HashMap<>();
}
/**
* Sets Hazelcast UUID.
*
* @param hazelcastUuid
* ID to set
*/
public void setHazelcastUuid(String hazelcastUuid) {
this.hazelcastUuid = hazelcastUuid;
}
/**
* Returns unique ID of underlying Hazelcast Instance if this instance is
* Hazelcat Member (data instance/lite instance). If the instance is Hazelcast
* Client (native instance), then this field should be obviously null.
*
* @return the Hazecast UUID
*/
public String getHazelcastUuid() {
return hazelcastUuid;
}
/**
* Returns cluster wide unique ID of the service
*
* @return cluster wide unique ID of the service
*/
public final String getUuid() {
return uuid;
}
/**
* Gets parameter of the service identified by 'paramName'
*
* @param paramName
* parameter name
*
* @return parameter of given name
*/
public final Object getParam(String paramName) {
return params.get(paramName);
}
/**
* Sets parameter of the service under the given 'paramName'
*
* @param paramName
* name of the parameter
* @param param
* parameter to be set
*/
public final void setParam(String paramName, Object param) {
params.put(paramName, param);
}
/**
* Returns service parameters
*
* @return unmodifiable map of parameters
*/
public final Map<String, Object> getParams() {
return Collections.unmodifiableMap(params);
}
/**
* Name of the service
*
* @return service name
*/
public final String getServiceName() {
return serviceName;
}
/**
* State of the service
*
* @return service state
*/
public final ServiceState getServiceState() {
return serviceState;
}
/**
* Sets service state
*
* @param serviceState
* service state to set
*/
public final void setServiceState(ServiceState serviceState) {
this.serviceState = serviceState;
}
/**
* Returns service state reason.
*
* @return service state reason
*/
public final String getStateReason() {
return stateReason;
}
/**
* Sets the reason associated with the state
*
* @param stateReason
* reason to set
*/
public final void setStateReason(String stateReason) {
this.stateReason = stateReason;
}
/**
* Sets associated info.
*
* @param serviceInfo
* info to set
*/
public void setServiceInfo(String serviceInfo) {
this.serviceInfo = serviceInfo;
}
/**
* Returns the service info
*
* @return service info.
*/
public String getServiceInfo() {
return serviceInfo != null ? serviceInfo : "";
}
}