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

io.timson.firehose.stream.DeliveryStreamService Maven / Gradle / Ivy

There is a newer version: 0.0.4
Show newest version
package io.timson.firehose.stream;

import io.timson.firehose.request.CreateDeliveryStreamRequest;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class DeliveryStreamService {

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

    private final DeliveryStreamFactory deliveryStreamFactory;

    public DeliveryStreamService(DeliveryStreamFactory deliveryStreamFactory) {
        this.deliveryStreamFactory = deliveryStreamFactory;
    }

    public void write(String deliveryStream, String data) {
        DeliveryStream stream = getDeliveryStream(deliveryStream);
        stream.write(data);
    }

    public void createStream(CreateDeliveryStreamRequest createStreamRequest) {
        final String name = createStreamRequest.getName();
        if (deliveryStreams.containsKey(name)) {
            throw new IllegalArgumentException(String.format("Stream with name %s already exists", name));
        }
        DeliveryStream deliveryStream = deliveryStreamFactory.fromRequest(createStreamRequest);
        deliveryStreams.put(name, deliveryStream);
    }

    public void deleteStream(String name) {
        if (!deliveryStreams.containsKey(name)) {
            throw new IllegalArgumentException(String.format("Stream with name %s does not exists", name));
        }
        DeliveryStream deliveryStream = getDeliveryStream(name);
        deliveryStream.stop();
        deliveryStreams.remove(name);
    }

    public Set listStreams() {
        return deliveryStreams.keySet();
    }

    private DeliveryStream getDeliveryStream(String name) {
        DeliveryStream stream = deliveryStreams.get(name);
        if (stream == null) {
            throw new IllegalArgumentException(String.format("Unknown delivery stream %s", name));
        }
        return stream;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy