Search in sources :

Example 6 with PubSubConnectionEntry

use of org.redisson.connection.PubSubConnectionEntry in project redisson by redisson.

the class RedissonTopic method removeListener.

@Override
public void removeListener(MessageListener<?> listener) {
    AsyncSemaphore semaphore = commandExecutor.getConnectionManager().getSemaphore(name);
    semaphore.acquireUninterruptibly();
    PubSubConnectionEntry entry = commandExecutor.getConnectionManager().getPubSubEntry(name);
    if (entry == null) {
        semaphore.release();
        return;
    }
    entry.removeListener(name, listener);
    if (!entry.hasListeners(name)) {
        commandExecutor.getConnectionManager().unsubscribe(name, semaphore);
    } else {
        semaphore.release();
    }
}
Also used : PubSubConnectionEntry(org.redisson.connection.PubSubConnectionEntry) AsyncSemaphore(org.redisson.pubsub.AsyncSemaphore)

Example 7 with PubSubConnectionEntry

use of org.redisson.connection.PubSubConnectionEntry in project redisson by redisson.

the class RedissonTopic method removeListener.

@Override
public void removeListener(int listenerId) {
    AsyncSemaphore semaphore = commandExecutor.getConnectionManager().getSemaphore(name);
    semaphore.acquireUninterruptibly();
    PubSubConnectionEntry entry = commandExecutor.getConnectionManager().getPubSubEntry(name);
    if (entry == null) {
        semaphore.release();
        return;
    }
    entry.removeListener(name, listenerId);
    if (!entry.hasListeners(name)) {
        commandExecutor.getConnectionManager().unsubscribe(name, semaphore);
    } else {
        semaphore.release();
    }
}
Also used : PubSubConnectionEntry(org.redisson.connection.PubSubConnectionEntry) AsyncSemaphore(org.redisson.pubsub.AsyncSemaphore)

Example 8 with PubSubConnectionEntry

use of org.redisson.connection.PubSubConnectionEntry in project redisson by redisson.

the class RedissonPatternTopic method removeListener.

@Override
public void removeListener(PatternMessageListener<M> listener) {
    AsyncSemaphore semaphore = commandExecutor.getConnectionManager().getSemaphore(name);
    semaphore.acquireUninterruptibly();
    PubSubConnectionEntry entry = commandExecutor.getConnectionManager().getPubSubEntry(name);
    if (entry == null) {
        semaphore.release();
        return;
    }
    entry.removeListener(name, listener);
    if (!entry.hasListeners(name)) {
        commandExecutor.getConnectionManager().punsubscribe(name, semaphore);
    } else {
        semaphore.release();
    }
}
Also used : PubSubConnectionEntry(org.redisson.connection.PubSubConnectionEntry) AsyncSemaphore(org.redisson.pubsub.AsyncSemaphore)

Aggregations

PubSubConnectionEntry (org.redisson.connection.PubSubConnectionEntry)8 AsyncSemaphore (org.redisson.pubsub.AsyncSemaphore)8