/hazelcast/src/main/java/com/hazelcast/impl/partition/ConfigMemberGroupFactory.java

https://bitbucket.org/gabral6_gmailcom/hazelcast · Java · 59 lines · 37 code · 7 blank · 15 comment · 7 complexity · eddb88ecdf9cd74e744403cef59ddb31 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. package com.hazelcast.impl.partition;
  17. import com.hazelcast.config.MemberGroupConfig;
  18. import com.hazelcast.impl.MemberImpl;
  19. import com.hazelcast.util.AddressUtil;
  20. import java.util.*;
  21. import java.util.Map.Entry;
  22. public class ConfigMemberGroupFactory extends BackupSafeMemberGroupFactory implements MemberGroupFactory {
  23. private final Map<Integer, MemberGroupConfig> memberGroupConfigMap;
  24. public ConfigMemberGroupFactory(Collection<MemberGroupConfig> memberGroupConfigs) {
  25. super();
  26. this.memberGroupConfigMap = new LinkedHashMap<Integer, MemberGroupConfig>();
  27. int key = 0;
  28. for (MemberGroupConfig groupConfig : memberGroupConfigs) {
  29. memberGroupConfigMap.put(key++, groupConfig);
  30. }
  31. }
  32. protected Set<MemberGroup> createInternalMemberGroups(Collection<MemberImpl> members) {
  33. final Map<Integer, MemberGroup> memberGroups = new HashMap<Integer, MemberGroup>();
  34. for (MemberImpl member : members) {
  35. if (member.isLiteMember()) {
  36. continue;
  37. }
  38. for (Entry<Integer, MemberGroupConfig> groupConfigEntry : memberGroupConfigMap.entrySet()) {
  39. if (AddressUtil.matchAnyInterface(member.getAddress().getHost(), groupConfigEntry.getValue().getInterfaces())) {
  40. MemberGroup group = memberGroups.get(groupConfigEntry.getKey());
  41. if (group == null) {
  42. group = new DefaultMemberGroup();
  43. memberGroups.put(groupConfigEntry.getKey(), group);
  44. }
  45. group.addMember(member);
  46. break;
  47. }
  48. }
  49. }
  50. return new HashSet<MemberGroup>(memberGroups.values());
  51. }
  52. }