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

cn.gitlab.virtualcry.reactor.bus.subscriber.EventSubscriber Maven / Gradle / Ivy

There is a newer version: 3.2.2
Show newest version
package cn.gitlab.virtualcry.reactor.bus.subscriber;

import cn.gitlab.virtualcry.reactor.bus.Event;
import cn.gitlab.virtualcry.reactor.bus.support.EventConsumer;
import lombok.Builder;
import lombok.Getter;
import org.reactivestreams.Subscription;
import reactor.util.annotation.Nullable;

import java.io.Serializable;
import java.util.Objects;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * Subscribe an event stream.
 *
 * @author VirtualCry
 */
@Getter
@Builder
public final class EventSubscriber implements Serializable {

    private final SubscriberID                      id;
    private final EventConsumer          eventConsumer;
    private final BiConsumer errorConsumer;
    private final Runnable                          completeConsumer;
    private final Consumer    subscriptionConsumer;

    public EventSubscriber(
            @Nullable SubscriberID subscriberID,
            @Nullable EventConsumer eventConsumer,
            @Nullable BiConsumer errorConsumer,
            @Nullable Runnable completeConsumer,
            @Nullable Consumer subscriptionConsumer) {
        this.id = (Objects.isNull(subscriberID)) ? SubscriberID.create() : subscriberID;
        this.eventConsumer = (Objects.isNull(eventConsumer)) ? t -> { } : eventConsumer;
        this.errorConsumer = (Objects.isNull(errorConsumer)) ? (throwable, t) -> { } : errorConsumer;
        this.completeConsumer = completeConsumer;
        this.subscriptionConsumer = subscriptionConsumer;
    }

    @Override
    public boolean equals(Object object) {
        if (this == object) return true;
        if (object == null || getClass() != object.getClass()) return false;
        EventSubscriber that = (EventSubscriber) object;
        return id.equals(that.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy