001
014
015 package com.liferay.portal.kernel.cache.cluster;
016
017 import java.util.List;
018 import java.util.concurrent.atomic.AtomicLong;
019
020
023 public class UniformPortalCacheClusterChannelSelector
024 implements PortalCacheClusterChannelSelector {
025
026 @Override
027 public long getSelectedNumber() {
028 return _eventCounter.get();
029 }
030
031 @Override
032 public PortalCacheClusterChannel select(
033 List<PortalCacheClusterChannel> portalCacheClusterChannels,
034 PortalCacheClusterEvent portalCacheClusterEvent) {
035
036 long count = _eventCounter.getAndIncrement();
037 int size = portalCacheClusterChannels.size();
038
039 return portalCacheClusterChannels.get((int)(count % size));
040 }
041
042 private AtomicLong _eventCounter = new AtomicLong(0);
043
044 }