/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.coordinator.client.model;
import com.emc.storageos.coordinator.exceptions.FatalCoordinatorException;
public class SiteMonitorResult implements CoordinatorSerializable {
private static final String ENCODING_SEPARATOR = "\0";
public static final String CONFIG_KIND = "siteMonitorState";
public static final String CONFIG_ID = "global";
private long dbQuorumLostSince;
private long dbQuorumLastActive;
public SiteMonitorResult() {
}
private SiteMonitorResult(long dbQuorumLostSince) {
this.dbQuorumLostSince = dbQuorumLostSince;
}
public long getDbQuorumLostSince() {
return dbQuorumLostSince;
}
public void setDbQuorumLostSince(long dbQuorumLostSince) {
this.dbQuorumLostSince = dbQuorumLostSince;
}
public long getDbQuorumLastActive() {
return dbQuorumLastActive;
}
public void setDbQuorumLastActive(long dbQuorumLastActive) {
this.dbQuorumLastActive = dbQuorumLastActive;
}
@Override
public String encodeAsString() {
StringBuilder sb = new StringBuilder();
sb.append(dbQuorumLostSince);
sb.append(ENCODING_SEPARATOR);
sb.append(dbQuorumLastActive);
return sb.toString();
}
@Override
public SiteMonitorResult decodeFromString(String infoStr) throws FatalCoordinatorException {
if (infoStr == null) {
return null;
}
try {
final String[] strings = infoStr.split(ENCODING_SEPARATOR);
SiteMonitorResult result = new SiteMonitorResult();
if (strings.length >= 1) {
long lostSince = Long.valueOf(strings[0]);
result.setDbQuorumLostSince(lostSince);
}
if (strings.length > 1) {
long lastActive = Long.valueOf(strings[1]);
result.setDbQuorumLastActive(lastActive);
}
return result;
} catch (NumberFormatException e) {
return new SiteMonitorResult();
}
}
@Override
public CoordinatorClassInfo getCoordinatorClassInfo() {
return new CoordinatorClassInfo(CONFIG_ID, CONFIG_KIND, "siteMonitorState");
}
}