View Javadoc

1   /*
2    * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3    * the spring framework, http://el4j.sf.net
4    * Copyright (C) 2006 by ELCA Informatique SA, Av. de la Harpe 22-24,
5    * 1000 Lausanne, Switzerland, http://www.elca.ch
6    *
7    * EL4J is published under the GNU Lesser General Public License (LGPL)
8    * Version 2.1. See http://www.gnu.org/licenses/
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13   * GNU Lesser General Public License for more details.
14   *
15   * For alternative licensing, please contact info@elca.ch
16   */
17  package ch.elca.el4j.services.remoting.protocol.loadbalancing.policy;
18  
19  import ch.elca.el4j.services.remoting.AbstractRemotingProtocol;
20  import ch.elca.el4j.services.remoting.protocol.loadbalancing.NoProtocolAvailableRTException;
21  
22  
23  /**
24   *
25   * Chooses protocols according to a round robin policy.
26   *
27   * @svnLink $Revision: 3883 $;$Date: 2009-08-04 15:35:01 +0200 (Di, 04. Aug 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/remoting_core/src/main/java/ch/elca/el4j/services/remoting/protocol/loadbalancing/policy/RoundRobinPolicy.java $
28   *
29   * @author Stefan Pleisch (SPL)
30   */
31  public class RoundRobinPolicy extends AbstractPolicy {
32  
33  	/** Index of the protocol currently in use. */
34  	private int m_currentIndex = -1;
35  	
36  	/**
37  	 * {@inheritDoc}
38  	 */
39  	@Override
40  	public AbstractRemotingProtocol getNextProtocol()
41  		throws NoProtocolAvailableRTException {
42  		if ((m_protocols == null) || (m_protocols.length == 0)) {
43  			throw new NoProtocolAvailableRTException("No protocol defined");
44  		}
45  		m_currentIndex = (m_currentIndex + 1) % m_protocols.length;
46  		return m_protocols[m_currentIndex];
47  	}
48  }