@@ -606,14 +606,14 @@ final class ZQuery[-R, +E, +A] private (private val step: ZIO[R, Nothing, Result
606
606
/**
607
607
* Returns a new query that executes this one and times the execution.
608
608
*/
609
- final def timed (implicit trace : ZTraceElement ): ZQuery [R with Clock , E , (Duration , A )] =
609
+ final def timed (implicit trace : ZTraceElement ): ZQuery [R , E , (Duration , A )] =
610
610
summarized(Clock .nanoTime)((start, end) => Duration .fromNanos(end - start))
611
611
612
612
/**
613
613
* Returns an effect that will timeout this query, returning `None` if the
614
614
* timeout elapses before the query was completed.
615
615
*/
616
- final def timeout (duration : => Duration )(implicit trace : ZTraceElement ): ZQuery [R with Clock , E , Option [A ]] =
616
+ final def timeout (duration : => Duration )(implicit trace : ZTraceElement ): ZQuery [R , E , Option [A ]] =
617
617
timeoutTo(None )(Some (_))(duration)
618
618
619
619
/**
@@ -622,7 +622,7 @@ final class ZQuery[-R, +E, +A] private (private val step: ZIO[R, Nothing, Result
622
622
*/
623
623
final def timeoutFail [E1 >: E ](e : => E1 )(duration : => Duration )(implicit
624
624
trace : ZTraceElement
625
- ): ZQuery [R with Clock , E1 , A ] =
625
+ ): ZQuery [R , E1 , A ] =
626
626
timeoutTo(ZQuery .fail(e))(ZQuery .succeedNow)(duration).flatten
627
627
628
628
/**
@@ -631,7 +631,7 @@ final class ZQuery[-R, +E, +A] private (private val step: ZIO[R, Nothing, Result
631
631
*/
632
632
final def timeoutFailCause [E1 >: E ](cause : => Cause [E1 ])(duration : => Duration )(implicit
633
633
trace : ZTraceElement
634
- ): ZQuery [R with Clock , E1 , A ] =
634
+ ): ZQuery [R , E1 , A ] =
635
635
timeoutTo(ZQuery .failCause(cause))(ZQuery .succeedNow)(duration).flatten
636
636
637
637
/**
@@ -641,7 +641,7 @@ final class ZQuery[-R, +E, +A] private (private val step: ZIO[R, Nothing, Result
641
641
@ deprecated(" use timeoutFailCause" , " 0.3.0" )
642
642
final def timeoutHalt [E1 >: E ](cause : => Cause [E1 ])(duration : => Duration )(implicit
643
643
trace : ZTraceElement
644
- ): ZQuery [R with Clock , E1 , A ] =
644
+ ): ZQuery [R , E1 , A ] =
645
645
timeoutFailCause(cause)(duration)
646
646
647
647
/**
@@ -1216,17 +1216,7 @@ object ZQuery {
1216
1216
)(
1217
1217
f : A => ZQuery [R , E , B ]
1218
1218
)(implicit bf : BuildFrom [Collection [A ], B , Collection [B ]], trace : ZTraceElement ): ZQuery [R , E , Collection [B ]] =
1219
- if (as.isEmpty) ZQuery .succeed(bf.newBuilder(as).result())
1220
- else {
1221
- val iterator = as.iterator
1222
- var builder : ZQuery [R , E , Builder [B , Collection [B ]]] = null
1223
- while (iterator.hasNext) {
1224
- val a = iterator.next()
1225
- if (builder eq null ) builder = f(a).map(bf.newBuilder(as) += _)
1226
- else builder = builder.zipWithPar(f(a))(_ += _)
1227
- }
1228
- builder.map(_.result())
1229
- }
1219
+ ZQuery (ZIO .foreachPar(Chunk .fromIterable(as))(f(_).step).map(Result .collectAllPar(_).map(bf.fromSpecific(as))))
1230
1220
1231
1221
/**
1232
1222
* Performs a query for each element in a Set, collecting the results
@@ -1513,38 +1503,38 @@ object ZQuery {
1513
1503
final class TimeoutTo [- R , + E , + A , + B ](self : ZQuery [R , E , A ], b : () => B ) {
1514
1504
def apply [B1 >: B ](
1515
1505
f : A => B1
1516
- )(duration : => Duration )(implicit trace : ZTraceElement ): ZQuery [R with Clock , E , B1 ] =
1517
- ZQuery .environment[ Clock ].flatMap { clock =>
1518
- def race (
1519
- query : ZQuery [R , E , B1 ],
1520
- fiber : Fiber [Nothing , B1 ]
1521
- ): ZQuery [R , E , B1 ] =
1522
- ZQuery {
1523
- query.step.raceWith[R , Nothing , Nothing , B1 , Result [R , E , B1 ]](fiber.join)(
1524
- (leftExit, rightFiber) =>
1525
- leftExit.foldZIO(
1526
- cause => rightFiber.interrupt *> ZIO .succeedNow(Result .fail(cause)),
1527
- result =>
1528
- result match {
1529
- case Result .Blocked (blockedRequests, continue) =>
1530
- continue match {
1531
- case Continue .Effect (query) =>
1532
- ZIO .succeedNow(Result .blocked(blockedRequests, Continue .effect(race(query, fiber))))
1533
- case Continue .Get (io) =>
1534
- ZIO .succeedNow(
1535
- Result .blocked(blockedRequests, Continue .effect(race(ZQuery .fromZIO(io), fiber)))
1536
- )
1537
- }
1538
- case Result .Done (value) => rightFiber.interrupt *> ZIO .succeedNow(Result .done(value))
1539
- case Result .Fail (cause) => rightFiber.interrupt *> ZIO .succeedNow(Result .fail(cause))
1540
- }
1541
- ),
1542
- (rightExit, leftFiber) => leftFiber.interrupt *> ZIO .succeedNow(Result .fromExit(rightExit))
1543
- )
1544
- }
1506
+ )(duration : => Duration )(implicit trace : ZTraceElement ): ZQuery [R , E , B1 ] = {
1507
+
1508
+ def race (
1509
+ query : ZQuery [R , E , B1 ],
1510
+ fiber : Fiber [Nothing , B1 ]
1511
+ ): ZQuery [R , E , B1 ] =
1512
+ ZQuery {
1513
+ query.step.raceWith[R , Nothing , Nothing , B1 , Result [R , E , B1 ]](fiber.join)(
1514
+ (leftExit, rightFiber) =>
1515
+ leftExit.foldZIO(
1516
+ cause => rightFiber.interrupt *> ZIO .succeedNow(Result .fail(cause)),
1517
+ result =>
1518
+ result match {
1519
+ case Result .Blocked (blockedRequests, continue) =>
1520
+ continue match {
1521
+ case Continue .Effect (query) =>
1522
+ ZIO .succeedNow(Result .blocked(blockedRequests, Continue .effect(race(query, fiber))))
1523
+ case Continue .Get (io) =>
1524
+ ZIO .succeedNow(
1525
+ Result .blocked(blockedRequests, Continue .effect(race(ZQuery .fromZIO(io), fiber)))
1526
+ )
1527
+ }
1528
+ case Result .Done (value) => rightFiber.interrupt *> ZIO .succeedNow(Result .done(value))
1529
+ case Result .Fail (cause) => rightFiber.interrupt *> ZIO .succeedNow(Result .fail(cause))
1530
+ }
1531
+ ),
1532
+ (rightExit, leftFiber) => leftFiber.interrupt *> ZIO .succeedNow(Result .fromExit(rightExit))
1533
+ )
1534
+ }
1545
1535
1546
- ZQuery .fromZIO(clock.get .sleep(duration).interruptible.as(b()).fork).flatMap(fiber => race(self.map(f), fiber))
1547
- }
1536
+ ZQuery .fromZIO(ZIO .sleep(duration).interruptible.as(b()).fork).flatMap(fiber => race(self.map(f), fiber))
1537
+ }
1548
1538
}
1549
1539
1550
1540
final class ServiceWithPartiallyApplied [R ](private val dummy : Boolean = true ) extends AnyVal {
0 commit comments