PaymentChannelAggregate class
Payment Channel Aggregate Root
One instance per payment channel, identified by channelId. Handles all channel commands and emits events as the source of truth.
Constructors
- PaymentChannelAggregate({required String aggregateId, required EventStore eventStore, required CryptoService cryptoService})
Properties
- aggregateId → String
-
The aggregate ID for this aggregate root
no setterinherited
- aggregateType → String
-
The aggregate type for this aggregate root
no setterinherited
-
commandHandlers
→ CommandHandlerRegistry<
ChannelState> -
Command handler registry for this aggregate
no setterinherited
- currentState → ChannelState
-
Current state of the aggregate (non-nullable)
Throws if the aggregate hasn't been initialized
no setterinherited
-
eventHandlers
→ EventHandlerRegistry<
ChannelState> -
Event handler registry for this aggregate
no setterinherited
- eventStore → EventStore
-
Current event store instance
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- isInitialized → bool
-
Whether the aggregate has been initialized with state
no setterinherited
- isOutOfService → bool
-
True once an infrastructure failure has taken this incarnation out of
service.
no setterinherited
- isRecovered → bool
-
Whether this actor has completed recovery
no setterinherited
- isRecovering → bool
-
Whether this actor is currently recovering from events
no setterinherited
- persistenceId → String
-
Unique identifier for this persistent actor
Used to store and retrieve events from the event store
no setterinherited
-
recoveryComplete
→ Future<
void> -
Future that completes when recovery finishes.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- sequenceNumber → int
-
Current sequence number for this actor
Incremented with each persisted event
no setterinherited
- state → ChannelState?
-
Current state of the aggregate
Returns null if the aggregate hasn't been initialized yet
no setterinherited
Methods
-
applyEvent(
ChannelState state, Event event) → ChannelState -
Applies
eventtostateand returns the next state (bead libspiffy-mmb).stateis never modified; eventador'seventHandlerreplaces the aggregate's state with the result once the event has applied, so an event that fails midway changes nothing. -
canApplyEvent(
Event event) → bool -
Check if the aggregate can apply a specific event
Override in subclasses for custom event routing
inherited
-
canHandleCommand(
Command command) → bool -
Check if the aggregate can handle a specific command
Override in subclasses for custom command routing
inherited
-
checkConcurrency(
int expectedVersion) → Future< void> -
Check optimistic concurrency control with expected version
Public method for explicit concurrency checking
inherited
-
commandHandler(
Command command) → Future< void> -
Process a command through the full pipeline
This is the main entry point for command processing.
inherited
-
createInitialState(
) → ChannelState - Create the initial state for this aggregate Override in subclasses to provide the initial state
-
createSnapshot(
) → Future< void> -
Create a snapshot of current state
Override to provide custom snapshot logic
inherited
-
ensureStateInitialized(
) → void -
Initialize the aggregate state
This is a protected method that subclasses can use when overriding eventHandler
to ensure state is initialized before processing events (replicating base class behavior)
inherited
-
eventHandler(
Event event) → void -
Apply an event to update the aggregate state
This is called during both command processing and recovery
inherited
-
getAggregateInfo(
) → AggregateInfo -
Get aggregate information for debugging and monitoring
inherited
-
getBusinessRuleViolations(
ChannelState state) → List< String> -
Get business rule violations for the current state
Override in subclasses to provide specific violation messages
inherited
-
getSnapshotState(
) → Future - Get the current state for snapshot creation
-
handleCommand(
ChannelState currentState, Command command) → Future< List< Event> > - Handle a command and generate events This is the core method for command processing
-
isInfrastructureFailure(
Object? error) → bool -
Whether
error, raised while processing the current command, is an infrastructure failure (see the mixin documentation) rather than a rejection of the command.inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onCommandFailure(
Command command, dynamic error) → Future< void> - Called when command processing fails Override to handle command failures
-
onCommandProcessed(
Command command, List< Event> events) → Future<void> - Called after a command has been successfully processed Override to perform post-command processing actions
-
onError(
Object error, StackTrace stackTrace) → void -
Called when an error occurs.
inherited
-
onEventApplicationFailure(
Event event, dynamic error) → void - Nothing printed: the error is rethrown to the caller.
-
onEventApplied(
Event event, ChannelState newState) → void -
Called after an event has been applied to the state
Override to perform post-event application actions
inherited
-
onMessage(
dynamic message) → Future< void> - Handle incoming messages with command/event routing
-
onMessageDropped(
dynamic message) → Future< void> -
Called when a message is dropped because recovery timed out or failed.
Override to send error responses, log, or enqueue for retry.
inherited
-
onPersist(
Event event) → Future< void> -
Called after successful event persistence
Override to perform post-persistence actions
inherited
-
onPersistBatch(
List< Event> events) → Future<void> -
Called after successful batch event persistence
Override to perform post-persistence actions for batches
inherited
-
onPersistBatchFailure(
List< Event> events, dynamic error) → Future<void> -
Called when batch event persistence fails
Override to handle batch persistence failures
inherited
-
onPersistFailure(
Event event, dynamic error) → Future< void> -
Called when event persistence fails
Override to handle persistence failures
inherited
-
onRecover(
) → Future< void> -
Called at the start of recovery process
Override to perform custom recovery initialization
inherited
-
onRecoveryComplete(
) → Future< void> -
Called when recovery is complete
Override to perform post-recovery initialization
inherited
-
onRecoveryFailure(
dynamic error) → Future< void> -
Called when recovery fails
Override to handle recovery failures
inherited
-
onReplay(
Event event) → Future< void> -
Called for each event during replay
Override to perform custom replay logic
inherited
-
onSnapshot(
dynamic snapshotState, int sequenceNumber) → Future< void> -
Restore state from snapshot during recovery
inherited
-
onSnapshotCreated(
dynamic state, int sequenceNumber) → Future< void> -
Called when a snapshot is created
Override to perform post-snapshot actions
inherited
-
onSnapshotRestorationFailure(
dynamic snapshotData, int sequenceNumber, dynamic error) → Future< void> - A snapshot that cannot be restored fails recovery instead of eventador's default (empty state plus only the events after the snapshot).
-
onSnapshotRestored(
ChannelState state, int sequenceNumber) → Future< void> -
Called after state has been restored from a snapshot
Override to perform post-snapshot restoration actions
inherited
-
persistEvent(
Event event) → Future< void> -
Persist an event to the event store
Events are immutable and stored permanently
inherited
-
persistEvents(
List< Event> events) → Future<void> -
Persist multiple events atomically
All events succeed or all fail together
inherited
-
postStop(
) → void -
Called when the actor is stopped.
inherited
-
preStart(
) → Future< void> -
Registers with the snapshot manager and recovers state.
inherited
-
queryHandler(
dynamic message) → Future< void> -
Handles incoming queries or other non-persistent messages.
inherited
-
registerHandlers(
) → void - Register command and event handlers for this aggregate Override in subclasses to register domain-specific handlers
-
replay(
List< Event> events) → void -
Replay events to rebuild aggregate state
Used during recovery and testing
inherited
-
restoreFromSnapshot(
dynamic snapshotData, int sequenceNumber) → Future< ChannelState> -
Restore state from snapshot data
Override in subclasses to provide custom restoration logic
inherited
-
restoreStateFromMap(
Map< String, dynamic> map, int sequenceNumber) → Future<ChannelState> - Restore state from a map representation Override in subclasses to provide custom map restoration
-
toString(
) → String -
A string representation of this object.
inherited
-
validateBusinessRules(
ChannelState state) → bool -
Validate business rules for the current state
Override in subclasses to implement domain-specific validation
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
channelStateToMap(
ChannelState s) → Map< String, dynamic> -
Every field of
s, in the form restoreStateFromMap reads.