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

org.reactivecommons.async.commons.reply.ReactiveReplyRouter Maven / Gradle / Ivy

There is a newer version: 5.2.2
Show newest version
package org.reactivecommons.async.commons.reply;

import org.reactivecommons.async.commons.communications.Message;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Sinks;

import java.util.concurrent.ConcurrentHashMap;

public class ReactiveReplyRouter {
    private final ConcurrentHashMap> processors = new ConcurrentHashMap<>();

    public Mono register(String correlationID) {
        final Sinks.One processor = Sinks.one();
        processors.put(correlationID, processor);
        return processor.asMono();
    }

    public void routeReply(String correlationID, Message data) {
        final Sinks.One processor = processors.remove(correlationID);
        if (processor != null) {
            processor.tryEmitValue(data);
        }
    }

    public void deregister(String correlationID) {
        processors.remove(correlationID);
    }

    public void routeEmpty(String correlationID) {
        final Sinks.One processor = processors.remove(correlationID);
        if (processor != null) {
            processor.tryEmitEmpty();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy