@Override public final Subject<T, T> call() { return ReplaySubject.<T>createWithSize(bufferSize); } }, selector));
@Override public Subject<? super T, ? extends T> call() { return ReplaySubject.<T>createWithSize(bufferSize); }
@Override public final Subject<T, T> call() { return OperatorReplay.<T> createScheduledSubject(ReplaySubject.<T>createWithSize(bufferSize), scheduler); } }, selector));
@Override public Subject<? super T, ? extends T> call() { return OperatorReplay.createScheduledSubject(ReplaySubject.<T>createWithSize(bufferSize), scheduler); }
/** * Builds and validates the structure of the expected header then * returns an {@link Observable} that can be used to submit info to the * {@link Network} * @return a new Publisher */ public Publisher build() { subject = ReplaySubject.createWithSize(3); for(int i = 0;i < HEADER_SIZE;i++) { if(lines[i] == null) { throw new IllegalStateException("Header not properly formed (must contain 3 lines) see Header.java"); } subject.onNext(lines[i]); } Publisher p = new Publisher(); p.subject = subject; if(notifier != null) { notifier.accept(p); } return p; } }
public Observable<Net.HttpResponse> write (ByteString data) { Buffer buffer = Buffer.buffer (data.toByteArray ()); ReplaySubject<Net.HttpResponse> subject = ReplaySubject.createWithSize(1); request.handler (response -> { if (!okStatuses.contains (response.statusCode ())) { throw new IllegalStateException (format("Unexpected statusCode %s and message %S", response.statusCode (), response.statusMessage ())); } response.bodyHandler (body -> { subject.onNext ( new Net.HttpResponse () { @Override public BytesEvent data () { return Codecs.BYTES.from (body.getBytes ()); } @Override public int status () { return response.statusCode (); } }); subject.onCompleted (); }); }) .exceptionHandler ( ex -> subject.onError (ex)) .putHeader ("Content-Length", String.valueOf (buffer.length ())) .end (buffer); return subject; }
ReplaySubject<Integer> r= ReplaySubject.createWithSize(2); r.onNext(1); r.onNext(2);
@OnClick(R.id.replay_subject_sized) public void onReplaySubjectSizedClick() { unsubscribe(); createSubscription(); // A replay subject that will only replay the last two items. ReplaySubject<Stock> stockReplaySubject = ReplaySubject.createWithSize(2); stockReplaySubject.onNext(new Stock(GOOG, 715.09)); stockReplaySubject.onNext(new Stock(GOOG, 716.00)); stockReplaySubject.onNext(new Stock(GOOG, 714.00)); // Only the last two items will be replayed to this subscriber (716 and 714) Subscription defaultSub = stockReplaySubject.subscribe(getDefaultSubscriber()); compositeSubscription.add(defaultSub); // All three values will be delivered. // This will also be emitted to the defaultSub above. stockReplaySubject.onNext(new Stock(GOOG, 720)); stockReplaySubject.onCompleted(); // Terminate the stream with a completed event. // Subscribe again, this time the subscriber will get the last two events and the terminal // event right away. The last two items are "replayed" even though the stream has completed. Subscription tardySubscription = stockReplaySubject.subscribe(getTardySubscriber()); compositeSubscription.add(tardySubscription); }