org.cloudsimplus.autoscaling.VerticalVmScalingNull Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cloudsim-plus Show documentation
Show all versions of cloudsim-plus Show documentation
CloudSim Plus: A modern, highly extensible and easier-to-use Java 8 Framework for Modeling and Simulation of Cloud Computing Infrastructures and Services
/*
* CloudSim Plus: A modern, highly-extensible and easier-to-use Framework for
* Modeling and Simulation of Cloud Computing Infrastructures and Services.
* http://cloudsimplus.org
*
* Copyright (C) 2015-2018 Universidade da Beira Interior (UBI, Portugal) and
* the Instituto Federal de Educação Ciência e Tecnologia do Tocantins (IFTO, Brazil).
*
* This file is part of CloudSim Plus.
*
* CloudSim Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CloudSim Plus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with CloudSim Plus. If not, see .
*/
package org.cloudsimplus.autoscaling;
import org.cloudbus.cloudsim.resources.Resource;
import org.cloudbus.cloudsim.resources.ResourceManageable;
import org.cloudbus.cloudsim.vms.Vm;
import org.cloudsimplus.autoscaling.resources.ResourceScaling;
import org.cloudsimplus.listeners.VmHostEventInfo;
import java.util.function.Function;
/**
* A class that implements the Null Object Design Pattern for {@link VerticalVmScaling}
* class.
*
* @author Manoel Campos da Silva Filho
* @see VerticalVmScaling#NULL
* @since CloudSim Plus 1.2.0
*/
final class VerticalVmScalingNull implements VerticalVmScaling {
@Override public Class getResourceClass() { return ResourceManageable.class; }
@Override public VerticalVmScaling setResourceClass(Class resourceClass) { return this; }
@Override public double getScalingFactor() {
return 0;
}
@Override public Function getResourceUsageThresholdFunction() { return vm -> 0.0; }
@Override public double getResourceAmountToScale() {
return 0.0;
}
@Override public VerticalVmScaling setScalingFactor(double scalingFactor) {
return this;
}
@Override public boolean isVmUnderloaded() { return false; }
@Override public boolean isVmOverloaded() { return false; }
@Override public Resource getResource() { return Resource.NULL; }
@Override public boolean requestUpScalingIfPredicateMatches(VmHostEventInfo evt) {
return false;
}
@Override public Vm getVm() {
return Vm.NULL;
}
@Override public VmScaling setVm(Vm vm) {
return this;
}
@Override public Function getUpperThresholdFunction() {
return vm -> Double.MAX_VALUE;
}
@Override public VerticalVmScaling setUpperThresholdFunction(Function upperThresholdFunction) { return this; }
@Override public Function getLowerThresholdFunction() { return vm -> Double.MIN_NORMAL; }
@Override public VerticalVmScaling setLowerThresholdFunction(Function lowerThresholdFunction) { return this; }
@Override public VerticalVmScaling setResourceScaling(ResourceScaling resourceScaling) { return this; }
@Override public long getAllocatedResource() { return 0; }
}