CollectivePulseBase<P> class abstract

The abstract base class for CollectivePulse implementations.

A CollectivePulseBase is the internal engine that bundles multiple independent pulses into a single atomic wave. Each sub‑pulse retains its own identity, trace, and lifecycle — they travel together but remain distinct.

How it works

  • Extends _SinglePulseBase with a payload of type Iterable<Pulse<P>>.
  • Overrides isComposite to return true, marking this as a bundle.
  • Provides the payload getter that returns the bundled pulses.
  • Manages the branch counter for completion tracking across all sub‑pulses.

Non‑obvious: the collective iterates over itself, not its payload

The iterator returns an iterator over the collective itself (a single element), not over the individual pulses. This is by design — the collective is a single unit that happens to contain multiple pulses. To access individual pulses, use the payload getter:

for (final p in collective.payload) {
  print(p.payload);
}

Non‑obvious: the branch counter tracks completion

The _branches counter is incremented in the constructor. This counter ensures that the collective's completion callback fires only when all sub‑pulses have finished processing. Without this, the framework wouldn't know when a composite pulse is truly complete.

Example

// You never create this directly — the framework does it for you:
final collective = Pulse.batch([pulse1, pulse2, pulse3]);
// collective is a CollectivePulseBase instance

See also:

Inheritance
Implemented types
Available extensions

Constructors

CollectivePulseBase({Iterable<Pulse<P>>? pulses, PulseEphemeralPolicy? policy, String? type, PulseContext? context, DateTime? timestamp, Cell? source, String? step, Function? onComplete, Function? onError, Function? onProgress, Pulse? pulse, Pulse? parent, FutureOr<Pulse?> scrutinize(Receptor<Cell> receptor)?, dynamic user, int? priority})
Creates a new collective pulse that bundles multiple individual pulses.

Properties

context PulseContext
Execution/security context.
no setterinherited
first Pulse
The first element.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
isComposite bool
Indicates that this pulse is a composite bundle.
no setteroverride
isEmpty bool
Whether this collection has no elements.
no setterinherited
isGoverned bool
Indicates whether this pulse is subject to explicit governance.
no setterinherited
isInvalidated bool
Indicates whether this message has reached its terminal lifecycle state.
no setterinherited
isNotEmpty bool
Whether this collection has at least one element.
no setterinherited
iterator Iterator<CollectivePulseBase<P>>
Returns an iterator over this collective itself.
no setter
last Pulse
The last element.
no setterinherited
length int
The number of elements in this Iterable.
no setterinherited
payload Iterable<Pulse<P>>
The collection of pulses bundled in this collective.
no setteroverride
policy PulseEphemeralPolicy?
The lifecycle governance policy for this pulse.
no setterinherited
priority int
The execution priority of this pulse (0‑100, higher = more urgent).
no setterinherited
root PulseBase<Iterable<Pulse<P>>>
The primordial ancestor that initiated this pulse's causal lineage.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shell PulseShell<Iterable<Pulse<P>>, Receptor<Cell>>
Returns a Defensive Proxy of this pulse for untrusted receivers.
no setterinherited
single Pulse
Checks that this iterable has only one element, and returns that element.
no setterinherited
source Cell?
Origin cell (for tracing).
no setterinherited
timestamp DateTime
When this pulse was created.
no setterinherited
trace List<String>
Causal trace path.
no setterinherited
type String?
Semantic type tag for pattern matching and routing.
no setterinherited
unmodifiable PulseBase<Iterable<Pulse<P>>>
Returns a read‑only projection of this pulse, ensuring structural and payload-level finality for the current propagation hop.
no setterinherited

Methods

any(bool test(Pulse element)) bool
Checks whether any element of this iterable satisfies test.
inherited
attach(dynamic context) Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Returns a new collection of pulses, each with the provided context metadata attached.
batch() Pulse

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Aggregates multiple signals into a single, flat CollectivePulse.
cast<R>() Iterable<R>
A view of this iterable as an iterable of R instances.
inherited
compareTo(Pulse other) int
Compares this pulse with another to determine relative execution precedence.
inherited
contains(Object? element) bool
Whether the collection contains an element equal to element.
inherited
elementAt(int index) Pulse
Returns the indexth element.
inherited
every(bool test(Pulse element)) bool
Checks whether every element of this iterable satisfies test.
inherited
evolve({Pulse? pulse, String? step, covariant PulseContext? context}) Pulse
Creates a derived version of this pulse for the next processing stage.
inherited
expand<T>(Iterable<T> toElements(Pulse element)) Iterable<T>
Expands each element of this Iterable into zero or more elements.
inherited
firstWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The first element that satisfies the given predicate test.
inherited
flatten() Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Recursively flattens any nested CollectivePulse structures into a sequence of simple pulses.
fold<T>(T initialValue, T combine(T previousValue, Pulse element)) → T
Reduces a collection to a single value by iteratively combining each element of the collection with an existing value
inherited
followedBy(Iterable<Pulse> other) Iterable<Pulse>
Creates the lazy concatenation of this iterable and other.
inherited
forEach(void action(Pulse element)) → void
Invokes action on each element of this iterable in iteration order.
inherited
join([String separator = ""]) String
Converts each element to a String and concatenates the strings.
inherited
lastWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The last element that satisfies the given predicate test.
inherited
lineage<T>(LineageArgument arg) List<T>
Traverses the causal chain from the root ancestor to this pulse to reconstruct a historical timeline of values.
inherited
map<T>(T toElement(Pulse e)) Iterable<T>
The current elements of this iterable modified by toElement.
inherited
mapEach<T>(T mapper(dynamic payload)) Iterable<Pulse<T>>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Transforms the payload of every pulse in the collection while preserving their individual causal traces.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
reduce(Pulse combine(Pulse value, Pulse element)) Pulse
Reduces a collection to a single value by iteratively combining elements of the collection using the provided function.
inherited
scrutinize(covariant Receptor<Cell> receptor, List? positionalArguments, [Map<Symbol, dynamic>? namedArguments]) → dynamic
Challenges a receptor to prove it has the authority to see this pulse.
inherited
singleWhere(bool test(Pulse element), {Pulse orElse()?}) Pulse
The single element that satisfies test.
inherited
skip(int count) Iterable<Pulse>
Creates an Iterable that provides all but the first count elements.
inherited
skipWhile(bool test(Pulse element)) Iterable<Pulse>
Creates an Iterable that skips leading elements while test is satisfied.
inherited
take(int count) Iterable<Pulse>
Creates a lazy iterable of the count first elements of this iterable.
inherited
takeWhile(bool test(Pulse element)) Iterable<Pulse>
Creates a lazy iterable of the leading elements satisfying test.
inherited
toList({bool growable = true}) List<Pulse>
Creates a List containing the elements of this Iterable.
inherited
toSet() Set<Pulse>
Creates a Set containing the same elements as this iterable.
inherited
toString() String
A string representation of this object.
where(bool test(Pulse element)) Iterable<Pulse>
Creates a new lazy Iterable with all elements that satisfy the predicate test.
inherited
whereType<T>() Iterable<R>
Creates a new lazy Iterable with all elements that have type T.
inherited
withStep(String step) Iterable<Pulse>

Available on Iterable<Pulse>, provided by the PulseIterableExtension extension

Appends a diagnostic stage to the causal trace of every pulse in this collection.
withStep(String step) Pulse<Iterable<Pulse<P>>>
Appends a diagnostic stage to the pulse's causal trace without branching the causal chain.
inherited

Operators

operator +(covariant Pulse other) CollectivePulse
Combines this pulse and other into a composite CollectivePulse.
inherited
operator ==(Object other) bool
The equality operator.
inherited