001
014
015 package com.liferay.portal.kernel.cache.cluster;
016
017 import java.util.ArrayList;
018 import java.util.List;
019
020
023 public class PortalCacheClusterLink {
024
025 public void afterPropertiesSet() {
026 _portalCacheClusterChannels = new ArrayList<>(_channelNumber);
027
028 for (int i = 0; i < _channelNumber; i++) {
029 _portalCacheClusterChannels.add(
030 _portalCacheClusterChannelFactory.
031 createPortalCacheClusterChannel());
032 }
033
034 if (_portalCacheClusterChannelSelector == null) {
035 _portalCacheClusterChannelSelector =
036 new UniformPortalCacheClusterChannelSelector();
037 }
038 }
039
040 public void destroy() {
041 for (PortalCacheClusterChannel portalCacheClusterChannel :
042 _portalCacheClusterChannels) {
043
044 portalCacheClusterChannel.destroy();
045 }
046 }
047
048 public long getSubmittedEventNumber() {
049 return _portalCacheClusterChannelSelector.getSelectedNumber();
050 }
051
052 public void sendEvent(PortalCacheClusterEvent portalCacheClusterEvent) {
053 PortalCacheClusterChannel portalCacheClusterChannel =
054 _portalCacheClusterChannelSelector.select(
055 _portalCacheClusterChannels, portalCacheClusterEvent);
056
057 portalCacheClusterChannel.sendEvent(portalCacheClusterEvent);
058 }
059
060 public void setChannelNumber(int channelNumber) {
061 _channelNumber = channelNumber;
062 }
063
064 public void setPortalCacheClusterChannelFactory(
065 PortalCacheClusterChannelFactory portalCacheClusterChannelFactory) {
066
067 _portalCacheClusterChannelFactory = portalCacheClusterChannelFactory;
068 }
069
070 public void setPortalCacheClusterChannelSelector(
071 PortalCacheClusterChannelSelector portalCacheClusterChannelSelector) {
072
073 _portalCacheClusterChannelSelector = portalCacheClusterChannelSelector;
074 }
075
076 private static final int _DEFAULT_CHANNEL_NUMBER = 10;
077
078 private int _channelNumber = _DEFAULT_CHANNEL_NUMBER;
079 private PortalCacheClusterChannelFactory _portalCacheClusterChannelFactory;
080 private List<PortalCacheClusterChannel> _portalCacheClusterChannels;
081 private PortalCacheClusterChannelSelector
082 _portalCacheClusterChannelSelector;
083
084 }