package org.mobicents.qa.performance.jainsip.governor; import java.util.Timer; import java.util.TimerTask; import org.mobicents.qa.performance.jainsip.inspector.TestObserver; import org.mobicents.qa.performance.jainsip.util.SippController; public class FixedRateGovernor implements Governor { private TestObserver observer; private SippController controller; private boolean endTest; public FixedRateGovernor(TestObserver observer, SippController controller, int rate) { this.observer = observer; this.controller = controller; this.endTest = false; new Timer().schedule(new FixedRateGovernorTimerTask(rate), 0l, 1 * 1000); } public TestObserver getObserver() { return this.observer; } public void endTest() { this.controller.quit(); endTest = true; } private class FixedRateGovernorTimerTask extends TimerTask { private int rate; public FixedRateGovernorTimerTask(int rate) { controller.setRate(0); this.rate = rate; } public void run() { if (endTest) { return; } if (observer.getCreatedDialogCount() == 0) { controller.setRate(rate); System.out.println("FixedRateGovernor: Trying to lock ... "); } else { System.out.println("FixedRateGovernor: Keeping same rate: " + rate); } } } }