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

org.reactivecommons.async.starter.senders.GenericDirectAsyncGateway Maven / Gradle / Ivy

There is a newer version: 5.2.2
Show newest version
package org.reactivecommons.async.starter.senders;

import io.cloudevents.CloudEvent;
import lombok.AllArgsConstructor;
import org.reactivecommons.api.domain.Command;
import org.reactivecommons.async.api.AsyncQuery;
import org.reactivecommons.async.api.DirectAsyncGateway;
import org.reactivecommons.async.api.From;
import reactor.core.publisher.Mono;

import java.util.concurrent.ConcurrentMap;

import static org.reactivecommons.async.api.HandlerRegistry.DEFAULT_DOMAIN;

@AllArgsConstructor
public class GenericDirectAsyncGateway implements DirectAsyncGateway {
    private final ConcurrentMap directAsyncGateways;

    @Override
    public  Mono sendCommand(Command command, String targetName) {
        return sendCommand(command, targetName, DEFAULT_DOMAIN);
    }

    @Override
    public  Mono sendCommand(Command command, String targetName, long delayMillis) {
        return sendCommand(command, targetName, delayMillis, DEFAULT_DOMAIN);
    }

    @Override
    public  Mono sendCommand(Command command, String targetName, String domain) {
        return directAsyncGateways.get(domain).sendCommand(command, targetName);
    }

    @Override
    public  Mono sendCommand(Command command, String targetName, long delayMillis, String domain) {
        return directAsyncGateways.get(domain).sendCommand(command, targetName, delayMillis);
    }

    @Override
    public Mono sendCommand(CloudEvent command, String targetName) {
        return sendCommand(command, targetName, DEFAULT_DOMAIN);
    }

    @Override
    public Mono sendCommand(CloudEvent command, String targetName, long delayMillis) {
        return sendCommand(command, targetName, delayMillis, DEFAULT_DOMAIN);
    }

    @Override
    public Mono sendCommand(CloudEvent command, String targetName, String domain) {
        return directAsyncGateways.get(domain).sendCommand(command, targetName);
    }

    @Override
    public Mono sendCommand(CloudEvent command, String targetName, long delayMillis, String domain) {
        return directAsyncGateways.get(domain).sendCommand(command, targetName, delayMillis);
    }

    @Override
    public  Mono requestReply(AsyncQuery query, String targetName, Class type) {
        return requestReply(query, targetName, type, DEFAULT_DOMAIN);
    }

    @Override
    public  Mono requestReply(AsyncQuery query, String targetName, Class type, String domain) {
        return directAsyncGateways.get(domain).requestReply(query, targetName, type);
    }

    @Override
    public  Mono requestReply(CloudEvent query, String targetName, Class type) {
        return requestReply(query, targetName, type, DEFAULT_DOMAIN);
    }

    @Override
    public  Mono requestReply(CloudEvent query, String targetName, Class type, String domain) {
        return directAsyncGateways.get(domain).requestReply(query, targetName, type);
    }

    @Override
    public  Mono reply(T response, From from) {
        return directAsyncGateways.get(DEFAULT_DOMAIN).reply(response, from);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy