001/*
002 * Copyright (c) 2007-2022 The Cascading Authors. All Rights Reserved.
003 *
004 * Project and contact information: https://cascading.wensel.net/
005 *
006 * This file is part of the Cascading project.
007 *
008 * Licensed under the Apache License, Version 2.0 (the "License");
009 * you may not use this file except in compliance with the License.
010 * You may obtain a copy of the License at
011 *
012 *     http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing, software
015 * distributed under the License is distributed on an "AS IS" BASIS,
016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 * See the License for the specific language governing permissions and
018 * limitations under the License.
019 */
020
021package cascading.local.tap.aws.s3;
022
023/**
024 * Interface S3Checkpointer is used to retrieve and persist last known keys for any given S3 bucket.
025 *
026 * @see S3FileCheckpointer
027 */
028public interface S3Checkpointer
029  {
030  /**
031   * Method getLastKey returns the last known key or null for the requested bucket.
032   *
033   * @param bucketName of String
034   * @return String
035   */
036  String getLastKey( String bucketName );
037
038  /**
039   * Method setLastKey stores the last seen and consumed key for the given bucket.
040   *
041   * @param bucketName of String
042   * @param key        of String
043   */
044  void setLastKey( String bucketName, String key );
045
046  /**
047   * Method commit notifies the instance that no more keys will be handled.
048   */
049  void commit();
050  }