Table of Contents

Interface ISequence

Namespace
Silverback.Messaging.Sequences
Assembly
Silverback.Integration.dll

A set of logically related messages, like the chunks belonging to the same message or the messages in a dataset.

public interface ISequence : IDisposable
Inherited Members

Properties

AbortException

Gets the exception that caused the abort, if any.

Exception? AbortException { get; }

Property Value

Exception

Remarks

This property is filled only when AbortReason is Error.

AbortReason

Gets the reason of the abort.

SequenceAbortReason AbortReason { get; }

Property Value

SequenceAbortReason

Context

Gets the ConsumerPipelineContext related to the processing of this sequence (usually the context of the first message that initiated the sequence).

ConsumerPipelineContext Context { get; }

Property Value

ConsumerPipelineContext

IsAborted

Gets a value indicating whether the sequence processing has been aborted and no further message will be pushed.

bool IsAborted { get; }

Property Value

bool

IsBeingConsumed

Gets a value indicating whether the sequence is being consumed. This value is set to true as soon as CreateStream<TMessage>(IReadOnlyCollection<IMessageFilter>?) is called and the output IMessageStreamEnumerable<TMessage> is created.

bool IsBeingConsumed { get; }

Property Value

bool

IsComplete

Gets a value indicating whether all messages belonging to the sequence have been pushed and processed.

bool IsComplete { get; }

Property Value

bool

IsCompleting

Gets a value indicating whether all messages belonging to the sequence have been pushed and the last message is currently being processed.

bool IsCompleting { get; }

Property Value

bool

IsNew

Gets a value indicating whether the first message in the sequence was consumed and this instance was just created.

bool IsNew { get; }

Property Value

bool

IsPending

Gets a value indicating whether the sequence is incomplete and awaiting for new messages to be pushed.

bool IsPending { get; }

Property Value

bool

Length

Gets the length of the sequence so far.

int Length { get; }

Property Value

int

ParentSequence

Gets the ISequence that contain this sequence (e.g. the ChunkSequence whose aggregated message is added to a BatchSequence).

ISequence? ParentSequence { get; }

Property Value

ISequence

SequenceId

Gets the identifier that is used to match the consumed messages with their belonging sequence.

string SequenceId { get; }

Property Value

string

Sequences

Gets the ISequence that were added to this sequence (e.g. the ChunkSequence whose aggregated message is added to a BatchSequence).

IReadOnlyCollection<ISequence> Sequences { get; }

Property Value

IReadOnlyCollection<ISequence>

StreamProvider

Gets the IMessageStreamProvider that will be pushed with the messages belonging to the sequence.

IMessageStreamProvider StreamProvider { get; }

Property Value

IMessageStreamProvider

TotalLength

Gets the declared total length of the sequence, if known.

int? TotalLength { get; }

Property Value

int?

Methods

AbortAsync(SequenceAbortReason, Exception?)

Aborts the sequence processing. Used, for example, to signal that an exception occurred or the enumeration returned prematurely.

Task AbortAsync(SequenceAbortReason reason, Exception? exception = null)

Parameters

reason SequenceAbortReason

The abort reason.

exception Exception

The exception that caused the abort if an exception was thrown.

Returns

Task

A Task representing the asynchronous operation.

AbortIfIncompleteAsync()

Aborts the sequence processing if it hasn't been completed (or aborted) yet.

Task AbortIfIncompleteAsync()

Returns

Task

A Task representing the asynchronous operation.

AddAsync(IRawInboundEnvelope, ISequence?, bool)

Adds the message to the sequence.

Task<AddToSequenceResult> AddAsync(IRawInboundEnvelope envelope, ISequence? sequence, bool throwIfUnhandled)

Parameters

envelope IRawInboundEnvelope

The envelope to be added to the sequence.

sequence ISequence

The sequence to be added to the sequence.

throwIfUnhandled bool

A boolean value indicating whether an exception must be thrown if no subscriber is handling the message.

Returns

Task<AddToSequenceResult>

A Task<TResult> representing the asynchronous operation. The task result contains a flag indicating whether the operation was successful and the number of streams that have been actually pushed.

CreateStream<TMessage>(IReadOnlyCollection<IMessageFilter>?)

Creates a IMessageStreamEnumerable<TMessage> that will be pushed with the messages belonging to the sequence.

IMessageStreamEnumerable<TMessage> CreateStream<TMessage>(IReadOnlyCollection<IMessageFilter>? filters = null)

Parameters

filters IReadOnlyCollection<IMessageFilter>

The filters to be applied.

Returns

IMessageStreamEnumerable<TMessage>

The IMessageStreamEnumerable<TMessage>.

Type Parameters

TMessage

The type of the messages to be streamed.

GetCommitIdentifiers()

Gets the identifiers to be used to commit after successful processing.

IReadOnlyCollection<IBrokerMessageIdentifier> GetCommitIdentifiers()

Returns

IReadOnlyCollection<IBrokerMessageIdentifier>

The identifiers to be used to commit.

GetRollbackIdentifiers()

Gets the identifiers to be used to roll back in case of error.

IReadOnlyCollection<IBrokerMessageIdentifier> GetRollbackIdentifiers()

Returns

IReadOnlyCollection<IBrokerMessageIdentifier>

The identifiers to be used to rollback.