All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.iherus.shiro.cache.redis.config.RedisConfiguration Maven / Gradle / Ivy

/**
 * Copyright (c) 2016-2019, Bosco.Liao ([email protected]).
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package org.iherus.shiro.cache.redis.config;

import java.util.Collections;
import java.util.Set;

public interface RedisConfiguration {

	/**
	 * Default Configuration.
	 */
	RedisConfiguration defaulted = new RedisStandaloneConfiguration();

	/**
	 * Get the password to use.
	 *
	 * @return {@code null} by default.
	 */
	default String getPassword() {
		return null;
	}

	Set getAddresses(boolean ssl);

	static boolean isSentinelConfiguration(RedisConfiguration configuration) {
		return configuration instanceof SentinelConfiguration;
	}

	static boolean isClusterConfiguration(RedisConfiguration configuration) {
		return configuration instanceof ClusterConfiguration;
	}
	
	interface DatabaseConfiguration {

		/**
		 * Get the database index to use.
		 *
		 * @return {@code zero} by default.
		 */
		default int getDatabase() {
			return 0;
		}
	}
	
	interface StandaloneConfiguration extends DatabaseConfiguration {

		String getHost();

		int getPort();

	}

	interface SentinelConfiguration extends DatabaseConfiguration {

		/**
		 * Get the {@literal Sentinel} master node.
		 *
		 * @return get the master node or {@literal null} if not set.
		 */
		String getMasterName();

		/**
		 * Returns an {@link Collections#unmodifiableSet(Set)} of {@literal Sentinels}.
		 *
		 * @return {@link Set} of sentinels. Never {@literal null}.
		 */
		Set getSentinels();
		
	}

	interface ClusterConfiguration {

		/**
		 * Returns an {@link Collections#unmodifiableSet(Set)} of {@literal cluster nodes}.
		 *
		 * @return {@link Set} of nodes. Never {@literal null}.
		 */
		Set getClusterNodes();

		/**
		 * @return max number of redirects to follow or {@literal null} if not set.
		 */
		int getMaxAttempts();

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy