Packages

object ConcurrentChannel extends Serializable

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ConcurrentChannel
  2. Serializable
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. final class ApplyBuilders[F[_]] extends AnyVal

    Returned by the apply builder.

Value Members

  1. def apply[F[_]](implicit F: Concurrent[F]): ApplyBuilders[F]

    Builds an ConcurrentQueue value for F data types that implement the Concurrent type class.

    Builds an ConcurrentQueue value for F data types that implement the Concurrent type class.

    This builder uses the Partially-Applied Type technique.

  2. def of[F[_], E, A](implicit F: Concurrent[F], cs: ContextShift[F]): F[ConcurrentChannel[F, E, A]]

    Builds a multi-producer channel.

    Builds a multi-producer channel.

    This is the safe constructor.

    F

    is a cats.effect.Concurrent type class restriction; this queue is built to work with Concurrent data types

    cs

    is a ContextShift, needed for triggering async boundaries for fairness reasons, in case there's a need to back-pressure on the internal buffer

    See also

    withConfig for fine tuning for the created channel.

  3. def unsafe[F[_], E, A](defaultConsumerConfig: Config = ConsumerF.Config.default, producerType: ProducerSide = MultiProducer)(implicit F: Concurrent[F], cs: ContextShift[F]): ConcurrentChannel[F, E, A]

    The unsafe version of the ConcurrentChannel.withConfig builder.

    The unsafe version of the ConcurrentChannel.withConfig builder.

    UNSAFE PROTOCOL: This is unsafe due to problems that can happen via selecting the wrong ChannelType, so use with care.

    UNSAFE BECAUSE IMPURE: this builder violates referential transparency, as the queue keeps internal, shared state. Only use when you know what you're doing, otherwise prefer ConcurrentChannel.withConfig.

    defaultConsumerConfig

    is the default consumer configuration, for when using ConcurrentChannel.consume, see the documentation of ConsumerF.Config for details

    producerType

    (UNSAFE) specifies the concurrency scenario for the producer's side, for fine tuning that can lead to performance gains; the safe choice is MultiProducer and if in doubt, use it

    F

    is a cats.effect.Concurrent type class restriction; this queue is built to work with Concurrent data types

    cs

    is a ContextShift, needed for triggering async boundaries for fairness reasons, in case there's a need to back-pressure on the internal buffer

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
  4. def withConfig[F[_], E, A](defaultConsumerConfig: Config = ConsumerF.Config.default, producerType: ProducerSide = MultiProducer)(implicit F: Concurrent[F], cs: ContextShift[F]): F[ConcurrentChannel[F, E, A]]

    Builds an ConcurrentChannel with fined tuned config parameters.

    Builds an ConcurrentChannel with fined tuned config parameters.

    UNSAFE PROTOCOL: This is unsafe due to problems that can happen via selecting the wrong ChannelType.ProducerSide, so use with care.

    defaultConsumerConfig

    is the default consumer configuration, for when using ConcurrentChannel.consume, see the documentation of ConsumerF.Config for details

    producerType

    (UNSAFE) specifies the concurrency scenario for the producer's side, for fine tuning that can lead to performance gains; the safe choice is MultiProducer and if in doubt, use it

    F

    is a cats.effect.Concurrent type class restriction; this queue is built to work with Concurrent data types

    cs

    is a ContextShift, needed for triggering async boundaries for fairness reasons, in case there's a need to back-pressure on the internal buffer

    Annotations
    @UnsafeProtocol()