applyEvent method

  1. @override
ChannelState applyEvent(
  1. ChannelState state,
  2. Event event
)

Applies event to state and returns the next state (bead libspiffy-mmb). state is never modified; eventador's eventHandler replaces the aggregate's state with the result once the event has applied, so an event that fails midway changes nothing.

Implementation

@override
ChannelState applyEvent(ChannelState state, Event event) {
  if (event is! ChannelEvent) {
    throw ArgumentError('Expected ChannelEvent, got ${event.runtimeType}');
  }

  return switch (event) {
    final ChannelRequestedEvent evt => _applyChannelRequested(state, evt),
    final ChannelAcceptedEvent evt => _applyChannelAccepted(state, evt),
    final ChannelRejectedEvent evt => _applyChannelRejected(state, evt),
    final ServerAcceptanceRecordedEvent evt => _applyServerAcceptanceRecorded(state, evt),
    final RefundBuiltEvent evt => _applyRefundBuilt(state, evt),
    final RefundCountersignedEvent evt => _applyRefundCountersigned(state, evt),
    final FundingBroadcastStartedEvent evt => _applyFundingBroadcastStarted(state, evt),
    final FundingBroadcastFailedEvent evt => _applyFundingBroadcastFailed(state, evt),
    final FundingRecordedInWalletEvent evt => _applyFundingRecordedInWallet(state, evt),
    final ChannelOpenedEvent evt => _applyChannelOpened(state, evt),
    final PaymentRecordedEvent evt => _applyPaymentRecorded(state, evt),
    final PaymentAcknowledgedEvent evt => _applyPaymentAcknowledged(state, evt),
    final PaymentCountersignedEvent evt => _applyPaymentCountersigned(state, evt),
    final ReturnLegRecordedInWalletEvent evt =>
      _applyReturnLegRecordedInWallet(state, evt),
    final ChannelClosingEvent evt => _applyChannelClosing(state, evt),
    final ChannelClosedEvent evt => _applyChannelClosed(state, evt),
    final RefundClaimedEvent evt => _applyRefundClaimed(state, evt),
    final ChannelExpiredEvent evt => _applyChannelExpired(state, evt),
    _ => throw ArgumentError('Unknown event type: ${event.runtimeType}'),
  };
}