1 21 22 package org.continuent.sequoia.driver.connectpolicy; 23 24 import org.continuent.sequoia.common.exceptions.NoMoreControllerException; 25 import org.continuent.sequoia.driver.ControllerInfo; 26 import org.continuent.sequoia.driver.SequoiaUrl; 27 28 39 public class RoundRobinConnectPolicy extends AbstractControllerConnectPolicy 40 { 41 private int index = -1; 42 43 52 public RoundRobinConnectPolicy(ControllerInfo[] controllerList, 53 long retryIntervalInMs, int debugLevel) 54 { 55 super(controllerList, retryIntervalInMs, debugLevel); 56 } 57 58 61 public ControllerInfo getController() throws NoMoreControllerException 62 { 63 synchronized (suspectedControllers) 64 { 65 int looked = 0; 66 do 67 { 68 index = (index + 1) % controllerList.length; 69 looked++; 70 } 71 while (suspectedControllers.contains(controllerList[index]) 72 && (looked <= controllerList.length)); 73 if (looked > controllerList.length) 74 throw new NoMoreControllerException(); 75 if (debugLevel == SequoiaUrl.DEBUG_LEVEL_DEBUG) 76 System.out.println("Selected controller[" + index + "]:" 77 + controllerList[index]); 78 return controllerList[index]; 79 } 80 } 81 82 } 83 | Popular Tags |