@@ -0,0 +1,1565 @@
+/**%0A * Copyright 2013 Netflix, Inc.%0A * %0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A * %0A * http://www.apache.org/licenses/LICENSE-2.0%0A * %0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage rx.operators;%0A%0Aimport java.util.concurrent.TimeUnit;%0A%0Aimport rx.Observable;%0Aimport rx.Scheduler;%0Aimport rx.observables.ConnectableObservable;%0Aimport rx.util.functions.Func1;%0A%0Apublic final class OperationDelay %7B%0A%0A    public static %3CT%3E Observable%3CT%3E delay(Observable%3CT%3E observable, final long delay, final TimeUnit unit, final Scheduler scheduler) %7B%0A        // observable.map(x =%3E Observable.timer(t).map(_ =%3E x).startItAlreadyNow()).concat()%0A        Observable%3CObservable%3CT%3E%3E seqs = observable.map(new Func1%3CT, Observable%3CT%3E%3E() %7B%0A            public Observable%3CT%3E call(final T x) %7B%0A                ConnectableObservable%3CT%3E co = Observable.timer(delay, unit, scheduler).map(new Func1%3CVoid, T%3E() %7B%0A                    public T call(Void ignored) %7B%0A                        return x;%0A                    %7D%0A                %7D).replay();%0A                co.connect();%0A                return co;%0A            %7D%0A        %7D);%0A        return Observable.concat(seqs);%0A    %7D%0A%7D%0A

add OperationDelay