package org.zstack.storage.backup;
import org.zstack.core.config.GlobalConfig;
import org.zstack.core.config.GlobalConfigUpdateExtensionPoint;
import org.zstack.core.tacker.PingTracker;
import org.zstack.header.message.MessageReply;
import org.zstack.header.message.NeedReplyMessage;
import org.zstack.header.storage.backup.*;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
*/
public class BackupStoragePingTracker extends PingTracker {
private final static CLogger logger = Utils.getLogger(BackupStoragePingTracker.class);
private final Map<String, BackupStorageStatus> statusMap = Collections.synchronizedMap(new HashMap<String, BackupStorageStatus>());
@Override
public String getResourceName() {
return "backup storage";
}
@Override
public NeedReplyMessage getPingMessage(String resUuid) {
PingBackupStorageMsg msg = new PingBackupStorageMsg();
msg.setBackupStorageUuid(resUuid);
bus.makeTargetServiceIdByResourceUuid(msg, BackupStorageConstant.SERVICE_ID, resUuid);
return msg;
}
@Override
public int getPingInterval() {
return BackupStorageGlobalConfig.PING_INTERVAL.value(Integer.class);
}
@Override
public int getParallelismDegree() {
return BackupStorageGlobalConfig.PING_PARALLELISM_DEGREE.value(Integer.class);
}
@Override
public void handleReply(String resourceUuid, MessageReply reply) {
// nothing to do
}
@Override
protected void untrackHook(String resUuid) {
statusMap.remove(resUuid);
}
@Override
protected void startHook() {
BackupStorageGlobalConfig.PING_INTERVAL.installUpdateExtension(new GlobalConfigUpdateExtensionPoint() {
@Override
public void updateGlobalConfig(GlobalConfig oldConfig, GlobalConfig newConfig) {
pingIntervalChanged();
}
});
}
}