public void InitiatePeriodicCheckpoint()
 {
     if (periodicCheckpointTruncationState == PeriodicCheckpointTruncationState.NotStarted)
     {
         periodicCheckpointTruncationState = PeriodicCheckpointTruncationState.Ready;
     }
 }
        private bool ShouldInitiatePeriodicTruncation()
        {
            bool periodicCheckpointCompleted = periodicCheckpointTruncationState == PeriodicCheckpointTruncationState.CheckpointCompleted;

            if (periodicCheckpointCompleted)
            {
                periodicCheckpointTruncationState = PeriodicCheckpointTruncationState.TruncationStarted;
            }

            return(periodicCheckpointCompleted);
        }
        private bool ShouldInitiatePeriodicCheckpoint()
        {
            bool periodicCheckpointRequested = periodicCheckpointTruncationState == PeriodicCheckpointTruncationState.Ready;

            if (periodicCheckpointRequested)
            {
                periodicCheckpointTruncationState = PeriodicCheckpointTruncationState.CheckpointStarted;
            }

            return(periodicCheckpointRequested);
        }
        public void OnCheckpointCompleted(Exception err, CheckpointState state, bool isRecoveredCheckpoint)
        {
            if (!isRecoveredCheckpoint && periodicCheckpointTruncationState != PeriodicCheckpointTruncationState.CheckpointStarted)
            {
                // Checkpoint not initiated by config
                // Indicates regular checkpoint
                return;
            }

            if (err != null || state != CheckpointState.Completed)
            {
                // Checkpoint failed to complete successfully, reset periodic process to 'Ready'
                return;
            }

            periodicCheckpointTruncationState = PeriodicCheckpointTruncationState.CheckpointCompleted;
        }
 public void OnTruncationCompleted()
 {
     // Reset the periodic process
     periodicCheckpointTruncationState = PeriodicCheckpointTruncationState.NotStarted;
 }