package com.github.davidmoten.rx.internal.operators; import java.util.Queue; import rx.Observer; import rx.observables.SyncOnSubscribe; public class OnSubscribeFromQueue<T> extends SyncOnSubscribe<Queue<T>, T> { private final Queue<T> queue; public OnSubscribeFromQueue(Queue<T> queue) { this.queue = queue; } @Override protected Queue<T> generateState() { return this.queue; } @Override protected Queue<T> next(Queue<T> queue, Observer<? super T> observer) { T value = queue.poll(); if (value == null) { observer.onCompleted(); } else { observer.onNext(value); } return queue; } }