package com.nisum.basicFlowExample;

import java.util.concurrent.Flow;

public class PrintSubscriber<Integer> implements Flow.Subscriber<Integer> {

    private Flow.Subscription subscription;

    @Override
    public void onSubscribe(Flow.Subscription subscription) {
        this.subscription = subscription;
        subscription.request(1);
    }
    @Override
    public void onNext(Integer item) {
       // if(item==5) throw new RuntimeException("Something is wrong");
        System.out.println("PS ::" + item);
        subscription.request(1);
        if(item.equals(5))
        subscription.cancel();


    }
    @Override
    public void onError(Throwable error) {
        System.out.println("RECEIVED AN ERROR IN PRINT SUBSCRIBER: " + error.getMessage());
    }
    @Override
    public void onComplete() {
        System.out.println("PrintSubscriber is complete");
    }
}