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
_SinglePulseBasewith a payload of typeIterable<Pulse<P>>. - Overrides
isCompositeto returntrue, marking this as a bundle. - Provides the
payloadgetter 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:
- CollectivePulse – the public interface.
- Pulse.batch – the factory that creates collective pulses.
- Pulse.+ – the operator that creates collective pulses.
- Inheritance
- Implemented types
- Available extensions
Constructors
-
CollectivePulseBase({Iterable<
Pulse< ? pulses, PulseEphemeralPolicy? policy, String? type, PulseContext? context, DateTime? timestamp, Cell? source, String? step, Function? onComplete, Function? onError, Function? onProgress, Pulse? pulse, Pulse? parent, FutureOr<P> >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< , Receptor<P> >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<
Returns a new collection of pulses, each with the providedPulse> , provided by the PulseIterableExtension extensioncontextmetadata attached. -
batch(
) → Pulse -
Available on Iterable<
Aggregates multiple signals into a single, flat CollectivePulse.Pulse> , provided by the PulseIterableExtension extension -
cast<
R> () → Iterable< R> -
A view of this iterable as an iterable of
Rinstances.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<
Recursively flattens any nested CollectivePulse structures into a sequence of simple pulses.Pulse> , provided by the PulseIterableExtension extension -
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
actionon 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<
Transforms the payload of every pulse in the collection while preserving their individual causal traces.Pulse> , provided by the PulseIterableExtension extension -
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
countelements.inherited -
skipWhile(
bool test(Pulse element)) → Iterable< Pulse> -
Creates an
Iterablethat skips leading elements whiletestis satisfied.inherited -
take(
int count) → Iterable< Pulse> -
Creates a lazy iterable of the
countfirst 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<
Appends a diagnostic stage to the causal trace of every pulse in this collection.Pulse> , provided by the PulseIterableExtension extension -
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
otherinto a composite CollectivePulse.inherited -
operator ==(
Object other) → bool -
The equality operator.
inherited