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, NetworkType networkType = dartsv.NetworkType.TEST})
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
- 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 currentState, Event event) → ChannelState -
Apply an event to the current state and return the new state
This is the core method for event sourcing state transitions
inherited
-
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
-
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
inherited
-
handleCommand(
ChannelState currentState, Command command) → Future< List< Event> > - Handle a command and generate events This is the core method for command processing
-
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 -
Called when event application fails
Override to handle event application failures
inherited
-
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> -
Called when snapshot restoration fails
Override to handle snapshot restoration failures
inherited
-
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(
) → void -
Called when the actor is started.
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
inherited
-
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