@@ -2,7 +2,7 @@ package reactor.core.scala.publisher
2
2
3
3
import java .lang .{Boolean => JBoolean , Iterable => JIterable , Long => JLong }
4
4
import java .util
5
- import java .util .concurrent .Callable
5
+ import java .util .concurrent .{ Callable , TimeUnit }
6
6
import java .util .function .{BiFunction , Consumer , Function , Supplier }
7
7
import java .util .logging .Level
8
8
import java .util .{Comparator , stream , List => JList }
@@ -11,7 +11,7 @@ import org.reactivestreams.{Publisher, Subscriber, Subscription}
11
11
import reactor .core .Disposable
12
12
import reactor .core .publisher .FluxSink .OverflowStrategy
13
13
import reactor .core .publisher .{BufferOverflowStrategy , FluxSink , Signal , SignalType , SynchronousSink , Flux => JFlux , GroupedFlux => JGroupedFlux }
14
- import reactor .core .scheduler .Scheduler
14
+ import reactor .core .scheduler .{ Scheduler , Schedulers }
15
15
import reactor .util .Logger
16
16
import reactor .util .context .Context
17
17
import reactor .util .function .Tuple2
@@ -4065,6 +4065,13 @@ class Flux[T] private[publisher](private[publisher] val jFlux: JFlux[T]) extends
4065
4065
*/
4066
4066
final def zipWithIterable [T2 , V ](iterable : Iterable [_ <: T2 ], zipper : (T , T2 ) => _ <: V ) = Flux (jFlux.zipWithIterable[T2 , V ](iterable, zipper))
4067
4067
4068
+ final def zipWithTimeSinceSubscribe (): Flux [(T , Long )] = {
4069
+ val scheduler = Schedulers .single()
4070
+ var subscriptionTime : Long = 0
4071
+ doOnSubscribe(_ => subscriptionTime = scheduler.now(TimeUnit .MILLISECONDS ))
4072
+ .map(t => (t, scheduler.now(TimeUnit .MILLISECONDS ) - subscriptionTime))
4073
+ }
4074
+
4068
4075
final def asJava (): JFlux [T ] = jFlux
4069
4076
}
4070
4077
0 commit comments