PageRenderTime 19ms CodeModel.GetById 15ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/hazelcast/src/main/java/com/hazelcast/impl/RoundRobinLoadBalancer.java

https://bitbucket.org/gabral6_gmailcom/hazelcast
Java | 31 lines | 11 code | 5 blank | 15 comment | 0 complexity | 2173c20ebc375c17d95e515fde554afe MD5 | raw file
 1/*
 2 * Copyright (c) 2008-2013, Hazelcast, Inc. All Rights Reserved.
 3 *
 4 * Licensed under the Apache License, Version 2.0 (the "License");
 5 * you may not use this file except in compliance with the License.
 6 * You may obtain a copy of the License at
 7 *
 8 * http://www.apache.org/licenses/LICENSE-2.0
 9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.hazelcast.impl;
18
19import com.hazelcast.core.HazelcastInstance;
20import com.hazelcast.core.Member;
21
22import java.util.concurrent.atomic.AtomicLong;
23
24public class RoundRobinLoadBalancer implements ExecutionLoadBalancer {
25    final AtomicLong count = new AtomicLong();
26
27    public Member getTarget(HazelcastInstance hazelcastInstance) {
28        Object[] memberObjects = hazelcastInstance.getCluster().getMembers().toArray();
29        return (MemberImpl) memberObjects[((int) (Math.abs(count.incrementAndGet()) % memberObjects.length))];
30    }
31}