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

org.redisson.api.RSemaphoreReactive Maven / Gradle / Ivy

Go to download

Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava3/Reactive API. Client side caching. Over 50 Redis based Java objects and services: JCache API, Apache Tomcat, Hibernate, Spring, Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Scheduler, RPC

There is a newer version: 3.40.2
Show newest version
/**
 * Copyright (c) 2013-2024 Nikita Koksharov
 *
 * 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.redisson.api;

import reactor.core.publisher.Mono;

import java.time.Duration;
import java.util.concurrent.TimeUnit;

/**
 * Reactive interface of Redis based {@link java.util.concurrent.Semaphore}.
 * 

* Works in non-fair mode. Therefore order of acquiring is unpredictable. * * @author Nikita Koksharov * */ public interface RSemaphoreReactive extends RExpirableReactive { /** * Acquires a permit. * Waits if necessary until a permit became available. * * @return true if a permit was acquired and false * otherwise */ Mono tryAcquire(); /** * Tries to acquire defined amount of currently available permits. * * @param permits the number of permits to acquire * @return true if permits were acquired and false * otherwise */ Mono tryAcquire(int permits); /** * Acquires a permit. * Waits if necessary until a permit became available. * * @return void * */ Mono acquire(); /** * Acquires defined amount of permits. * Waits if necessary until all permits became available. * * @param permits the number of permits to acquire * @throws IllegalArgumentException if permits is negative * @return void */ Mono acquire(int permits); /** * Releases a permit. * * @return void */ Mono release(); /** * Releases defined amount of permits. * * @param permits amount * @return void */ Mono release(int permits); /** * Tries to set number of permits. * * @param permits number of permits * @return true if permits has been set successfully, otherwise false. */ Mono trySetPermits(int permits); /** * Tries to set number of permits with defined time to live. * * @param timeToLive time to live * @param permits number of permits * @return true if permits has been set successfully, otherwise false. */ Mono trySetPermits(int permits, Duration timeToLive); /** * Use {@link #tryAcquire(Duration)} instead * * @param waitTime the maximum time to wait * @param unit the time unit * @return true if a permit was acquired and false * otherwise */ @Deprecated Mono tryAcquire(long waitTime, TimeUnit unit); /** * Tries to acquire currently available permit. * Waits up to defined waitTime if necessary until a permit became available. * * @param waitTime the maximum time to wait * @return true if a permit was acquired and false * otherwise */ Mono tryAcquire(Duration waitTime); /** * Use {@link #tryAcquire(int, Duration)} instead * * @param permits amount of permits * @param waitTime the maximum time to wait * @param unit the time unit * @return true if permits were acquired and false * otherwise */ @Deprecated Mono tryAcquire(int permits, long waitTime, TimeUnit unit); /** * Tries to acquire defined amount of currently available permits. * Waits up to defined waitTime if necessary until all permits became available. * * @param permits amount of permits * @param waitTime the maximum time to wait * @param unit the time unit * @return true if permits were acquired and false * otherwise */ Mono tryAcquire(int permits, Duration waitTime); /** * Increases or decreases the number of available permits by defined value. * * @param permits amount of permits to add/remove */ Mono addPermits(int permits); /** * Returns amount of available permits. * * @return number of permits */ Mono availablePermits(); /** * Acquires and returns all permits that are immediately available. * * @return number of permits */ Mono drainPermits(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy