Skip to content

TPubSub

18 exports Added in v2.0.0 Source

Constructors

bounded

Added in v2.0.0 Source

Creates a bounded TPubSub with the back pressure strategy. The TPubSub will retain messages until they have been taken by all subscribers, applying back pressure to publishers if the TPubSub is at capacity.

Signature

declare const bounded: <A>(requestedCapacity: number) => STM.STM<TPubSub<A>>;

dropping

Added in v2.0.0 Source

Creates a bounded TPubSub with the dropping strategy. The TPubSub will drop new messages if the TPubSub is at capacity.

Signature

declare const dropping: <A>(requestedCapacity: number) => STM.STM<TPubSub<A>>;

sliding

Added in v2.0.0 Source

Creates a bounded TPubSub with the sliding strategy. The TPubSub will add new messages and drop old messages if the TPubSub is at capacity.

For best performance use capacities that are powers of two.

Signature

declare const sliding: <A>(requestedCapacity: number) => STM.STM<TPubSub<A>>;

unbounded

Added in v2.0.0 Source

Creates an unbounded TPubSub.

Signature

declare const unbounded: <A>() => STM.STM<TPubSub<A>>;

Getters

capacity

Added in v2.0.0 Source

Returns the number of elements the TPubSub can hold.

Signature

declare const capacity: <A>(self: TPubSub<A>) => number;

isEmpty

Added in v2.0.0 Source

Returns true if the TPubSub contains zero elements, false otherwise.

Signature

declare const isEmpty: <A>(self: TPubSub<A>) => STM.STM<boolean>;

isFull

Added in v2.0.0 Source

Returns true if the TPubSub contains at least one element, false otherwise.

Signature

declare const isFull: <A>(self: TPubSub<A>) => STM.STM<boolean>;

isShutdown

Added in v2.0.0 Source

Returns true if shutdown has been called, otherwise returns false.

Signature

declare const isShutdown: <A>(self: TPubSub<A>) => STM.STM<boolean>;

size

Added in v2.0.0 Source

Retrieves the size of the TPubSub, which is equal to the number of elements in the TPubSub. This may be negative if fibers are suspended waiting for elements to be added to the TPubSub.

Signature

declare const size: <A>(self: TPubSub<A>) => STM.STM<number>;

Models

TPubSub interface

Added in v2.0.0 Source

Signature

interface TPubSub<in out A> extends TEnqueue<A> {
  readonly [TPubSubTypeId]: {
    readonly _A: Invariant<A>;
  };
}

Mutations

Waits until the TPubSub is shutdown. The STM returned by this method will not resume until the queue has been shutdown. If the TPubSub is already shutdown, the STM will resume right away.

Signature

declare const awaitShutdown: <A>(self: TPubSub<A>) => STM.STM<void>;

publish

Added in v2.0.0 Source

Publishes a message to the TPubSub, returning whether the message was published to the TPubSub.

Signature

declare const publish: {
  <A>(value: A): (self: TPubSub<A>) => STM<boolean>;
  <A>(self: TPubSub<A>, value: A): STM<boolean>;
};

publishAll

Added in v2.0.0 Source

Publishes all of the specified messages to the TPubSub, returning whether they were published to the TPubSub.

Signature

declare const publishAll: {
  <A>(iterable: Iterable<A>): (self: TPubSub<A>) => STM<boolean>;
  <A>(self: TPubSub<A>, iterable: Iterable<A>): STM<boolean>;
};

subscribe

Added in v2.0.0 Source

Subscribes to receive messages from the TPubSub. The resulting subscription can be evaluated multiple times to take a message from the TPubSub each time. The caller is responsible for unsubscribing from the TPubSub by shutting down the queue.

Signature

declare const subscribe: <A>(self: TPubSub<A>) => STM.STM<TQueue.TDequeue<A>>;

Subscribes to receive messages from the TPubSub. The resulting subscription can be evaluated multiple times within the scope to take a message from the TPubSub each time.

Signature

declare const subscribeScoped: <A>(
  self: TPubSub<A>,
) => Effect.Effect<TQueue.TDequeue<A>, never, Scope.Scope>;

Symbols

Signature

declare const TPubSubTypeId: unique symbol;

TPubSubTypeId type

Added in v2.0.0 Source

Signature

type TPubSubTypeId = typeof TPubSubTypeId;

Utils

shutdown

Added in v2.0.0 Source

Interrupts any fibers that are suspended on offer or take. Future calls to offer* and take* will be interrupted immediately.

Signature

declare const shutdown: <A>(self: TPubSub<A>) => STM.STM<void>;