Table of Contents

Class Concat

Namespace
Bonsai.Reactive
Assembly
Bonsai.Core.dll

Represents an operator that concatenates any number of observable sequences as long as the previous sequence terminated successfully.

Marble diagram

The Concat operator allows you to combine the output of multiple sequences of the same type into a single sequence. Concat subscribes to each sequence in turn, emits all the values from that sequence until successful termination, and then subscribes to the next sequence. Each sequence is guaranteed to only start after the previous one terminates.

The resulting sequence will terminate successfully when the last source sequence has terminated successfully, or exceptionally as soon as any sequence produces an error.

Higher-order operator

Concat also works as a higher-order operator, so it can take as input a sequence of observable sequences. In this case, it will subscribe to the first source sequence and start passing along all emitted values. As soon as that sequence terminates, it will subscribe to the next received sequence, either immediately if it arrived before termination of the first sequence, or as soon as a new observable sequence is emitted.

Higher order

The higher-order variant is useful to queue execution of long-running operations, for example to sequence logic states in a task, or merging video files in a folder sequentially into a single frame sequence.

[Combinator]
public class Concat
Inheritance
Concat
Inherited Members

Methods

Process<TSource>(IObservable<IEnumerable<TSource>>)

Concatenates all inner enumerable sequences into one observable sequence.

public IObservable<TSource> Process<TSource>(IObservable<IEnumerable<TSource>> sources)

Parameters

sources IObservable<IEnumerable<TSource>>

The observable sequence of inner enumerable sequences.

Returns

IObservable<TSource>

An observable sequence that contains the elements of each inner enumerable sequence, in sequential order.

Type Parameters

TSource

The type of the elements in the source sequences.

Process<TSource>(IObservable<IObservable<TSource>>)

Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully.

public IObservable<TSource> Process<TSource>(IObservable<IObservable<TSource>> sources)

Parameters

sources IObservable<IObservable<TSource>>

The observable sequence of inner observable sequences.

Returns

IObservable<TSource>

An observable sequence that contains the elements of each observed inner sequence, in sequential order.

Type Parameters

TSource

The type of the elements in the source sequences.

Process<TSource>(IObservable<TSource>, IObservable<TSource>)

Concatenates the second observable sequence to the first observable sequence upon successful termination of the first.

public IObservable<TSource> Process<TSource>(IObservable<TSource> first, IObservable<TSource> second)

Parameters

first IObservable<TSource>

The first observable sequence.

second IObservable<TSource>

The second observable sequence.

Returns

IObservable<TSource>

An observable sequence that contains the elements of the first sequence, followed by those of the second sequence.

Type Parameters

TSource

The type of the elements in the source sequences.

Process<TSource>(IObservable<TSource>, IObservable<TSource>, params IObservable<TSource>[])

Concatenates all of the specified observable sequences, as long as the previous observable sequence terminated successfully.

public IObservable<TSource> Process<TSource>(IObservable<TSource> first, IObservable<TSource> second, params IObservable<TSource>[] remainder)

Parameters

first IObservable<TSource>

The first observable sequence.

second IObservable<TSource>

The second observable sequence.

remainder IObservable<TSource>[]

The remaining observable sequences to concatenate.

Returns

IObservable<TSource>

An observable sequence that contains the elements of each given sequence, in sequential order.

Type Parameters

TSource

The type of the elements in the source sequences.