protected virtual void Restore( ReadModelState snapshot, bool startListeners = true, bool block = false, int msTimeout = 1000) { if (StartingState != null) { throw new InvalidOperationException("ReadModel has already been restored."); } Ensure.NotNull(snapshot, nameof(snapshot)); StartingState = snapshot; ApplyState(StartingState); if (!startListeners || StartingState.Checkpoints == null) { return; } foreach (var stream in StartingState.Checkpoints) { Start(stream.Item1, stream.Item2, block, msTimeout); } }
protected abstract void ApplyState(ReadModelState snapshot);