ConcurrentChannel

Companion
class
class Object
trait Matchable
class Any

Type members

Classlikes

final class ApplyBuilders[F[_]](val F: Concurrent[F]) extends AnyVal

Returned by the apply builder.

Returned by the apply builder.

Value members

Concrete methods

def apply[F[_]](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.

def of[F[_], E, A](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.

Value Params
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.

@UnsafeProtocol @UnsafeBecauseImpure
def unsafe[F[_], E, A](defaultConsumerConfig: Config, producerType: ProducerSide)(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.

Value Params
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

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

@UnsafeProtocol
def withConfig[F[_], E, A](defaultConsumerConfig: Config, producerType: ProducerSide)(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.

Value Params
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

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