/*
Copyright (c) 2012 LinkedIn Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* $Id$
*/
package com.linkedin.util.degrader;
/**
* @author Swee Lim
* @version $Rev$
*/
import java.util.Date;
public class DegraderControl implements DegraderControlMBean
{
private final DegraderImpl _degrader;
public DegraderControl(DegraderImpl degrader)
{
_degrader = degrader;
}
@Override
public double getCurrentDropRate()
{
return _degrader.getStats().getCurrentDropRate();
}
@Override
public double getCurrentComputedDropRate()
{
return _degrader.getStats().getCurrentComputedDropRate();
}
@Override
public boolean isHigh()
{
return _degrader.isHigh();
}
@Override
public boolean isLow()
{
return _degrader.isLow();
}
@Override
public long getCurrentCountTotal()
{
return _degrader.getStats().getCurrentCountTotal();
}
@Override
public long getCurrentNoOverrideDropCountTotal()
{
return _degrader.getStats().getCurrentNoOverrideDropCountTotal();
}
@Override
public long getCurrentDroppedCountTotal()
{
return _degrader.getStats().getCurrentDroppedCountTotal();
}
@Override
public Date getLastNotDroppedTime()
{
return new Date(_degrader.getStats().getLastNotDroppedTime());
}
@Override
public long getInterval()
{
return _degrader.getStats().getInterval();
}
@Override
public Date getIntervalEndTime()
{
return new Date(_degrader.getStats().getIntervalEndTime());
}
@Override
public double getDroppedRate()
{
return _degrader.getStats().getDroppedRate();
}
@Override
public int getCallCount()
{
return _degrader.getStats().getCallCount();
}
@Override
public long getLatency()
{
return _degrader.getStats().getLatency();
}
@Override
public double getErrorRate()
{
return _degrader.getStats().getErrorRate();
}
@Override
public long getOutstandingLatency()
{
return _degrader.getStats().getOutstandingLatency();
}
@Override
public int getOutstandingCount()
{
return _degrader.getStats().getOutstandingCount();
}
@Override
public String getName()
{
return _degrader.getName();
}
@Override
public boolean isLogEnabled()
{
return _degrader.getConfig().isLogEnabled();
}
@Override
public String getLatencyToUse()
{
return _degrader.getConfig().getLatencyToUse().toString();
}
@Override
public double getOverrideDropRate()
{
return _degrader.getConfig().getOverrideDropRate();
}
@Override
public double getMaxDropRate()
{
return _degrader.getConfig().getMaxDropRate();
}
@Override
public long getMaxDropDuration()
{
return _degrader.getConfig().getMaxDropDuration();
}
@Override
public double getUpStep()
{
return _degrader.getConfig().getUpStep();
}
@Override
public double getDownStep()
{
return _degrader.getConfig().getDownStep();
}
@Override
public int getMinCallCount()
{
return _degrader.getConfig().getMinCallCount();
}
@Override
public long getHighLatency()
{
return _degrader.getConfig().getHighLatency();
}
@Override
public long getLowLatency()
{
return _degrader.getConfig().getLowLatency();
}
@Override
public double getHighErrorRate()
{
return _degrader.getConfig().getHighErrorRate();
}
@Override
public double getLowErrorRate()
{
return _degrader.getConfig().getLowErrorRate();
}
@Override
public long getHighOutstanding()
{
return _degrader.getConfig().getHighOutstanding();
}
@Override
public long getLowOutstanding()
{
return _degrader.getConfig().getLowOutstanding();
}
@Override
public int getMinOutstandingCount()
{
return _degrader.getConfig().getMinOutstandingCount();
}
public int getOverrideMinCallCount()
{
return _degrader.getConfig().getOverrideMinCallCount();
}
@Override
public void setLogEnabled(boolean logEnabled)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setLogEnabled(logEnabled);
_degrader.setConfig(config);
}
@Override
public void setLatencyToUse(String latencyToUse)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setLatencyToUse(DegraderImpl.LatencyToUse.valueOf(latencyToUse));
_degrader.setConfig(config);
}
@Override
public void setOverrideDropRate(double overrideDropRate)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setOverrideDropRate(overrideDropRate);
_degrader.setConfig(config);
}
@Override
public void setMaxDropRate(double maxDropRate)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setMaxDropRate(maxDropRate);
_degrader.setConfig(config);
}
@Override
public void setMaxDropDuration(long maxDropDuration)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setMaxDropDuration(maxDropDuration);
_degrader.setConfig(config);
}
@Override
public void setUpStep(double upStep)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setUpStep(upStep);
_degrader.setConfig(config);
}
@Override
public void setDownStep(double downStep)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setDownStep(downStep);
_degrader.setConfig(config);
}
@Override
public void setMinCallCount(int minCallCount)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setMinCallCount(minCallCount);
_degrader.setConfig(config);
}
@Override
public void setHighLatency(long highLatency)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setHighLatency(highLatency);
_degrader.setConfig(config);
}
@Override
public void setLowLatency(long lowLatency)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setLowLatency(lowLatency);
_degrader.setConfig(config);
}
@Override
public void setHighErrorRate(double highErrorRate)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setHighErrorRate(highErrorRate);
_degrader.setConfig(config);
}
@Override
public void setLowErrorRate(double lowErrorRate)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setLowErrorRate(lowErrorRate);
_degrader.setConfig(config);
}
@Override
public void setHighOutstanding(long highOutstanding)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setHighOutstanding(highOutstanding);
_degrader.setConfig(config);
}
@Override
public void setLowOutstanding(long lowOutstanding)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setLowOutstanding(lowOutstanding);
_degrader.setConfig(config);
}
@Override
public void setMinOutstandingCount(int minOutstandingCount)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setMinOutstandingCount(minOutstandingCount);
_degrader.setConfig(config);
}
public void setOverrideMinCallCount(int overrideMinCallCount)
{
DegraderImpl.Config config = new DegraderImpl.Config(_degrader.getConfig());
config.setOverrideMinCallCount(overrideMinCallCount);
_degrader.setConfig(config);
}
@Override
public void reset()
{
_degrader.reset();
}
}