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

pl.allegro.tech.hermes.consumers.supervisor.process.RunningConsumerProcesses Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
package pl.allegro.tech.hermes.consumers.supervisor.process;

import pl.allegro.tech.hermes.api.SubscriptionName;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Future;
import java.util.stream.Stream;

class RunningConsumerProcesses {

    private final Map processes = new HashMap<>();

    void add(ConsumerProcess process, Future executionHandle) {
        this.processes.put(process.getSubscriptionName(), new RunningProcess(process, executionHandle));
    }

    void remove(SubscriptionName subscriptionName) {
        processes.remove(subscriptionName);
    }

    void remove(ConsumerProcess process) {
        processes.remove(process.getSubscriptionName());
    }

    Future getExecutionHandle(SubscriptionName subscriptionName) {
        return processes.get(subscriptionName).executionHandle;
    }

    ConsumerProcess getProcess(SubscriptionName subscriptionName) {
        return processes.get(subscriptionName).process;
    }

    boolean hasProcess(SubscriptionName subscriptionName) {
        return processes.containsKey(subscriptionName);
    }

    Stream stream() {
        return processes.values().stream().map(p -> p.process);
    }

    Set existingConsumers() {
        return processes.keySet();
    }

    private static class RunningProcess {
        ConsumerProcess process;

        Future executionHandle;

        public RunningProcess(ConsumerProcess process, Future executionHandle) {
            this.process = process;
            this.executionHandle = executionHandle;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy