org.apache.flink.runtime.state.gemini.engine.DbPageIterator Maven / Gradle / Ivy
/*
*
* * Licensed to the Apache Software Foundation (ASF) under one
* * or more contributor license agreements. See the NOTICE file
* * distributed with this work for additional information
* * regarding copyright ownership. The ASF licenses this file
* * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* * with the License. You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package org.apache.flink.runtime.state.gemini.engine;
import org.apache.flink.runtime.state.gemini.engine.page.PageAddress;
import java.util.NoSuchElementException;
/**
* An iterator over all pages of DB.
*
* Usage Example
*
* Here is an example to use the iterator;
* {@code
* DbPageIterator iterator = geminiDB.getDbPageIterator();
* while (iterator.valid()) {
* GTable table = iterator.currentTable();
* GRegion region = iterator.currentRegion();
* PageAddress page = iterator.currentPage();
* // do something with the page
* iterator.next();
* }}
*/
public interface DbPageIterator {
/**
* The iterator is either positioned at a page, or not valid.
*
* @return {@code true} if the iterator is positioned at a page.
*/
boolean valid();
/**
* Moves to the next page.
*
* @throws NoSuchElementException if the iteration has no more pages.
*/
void next();
/**
* Returns the current table.
*
* @return the current table.
*/
GTable currentTable();
/**
* Returns the current region.
*
* @return the current region.
*/
GRegion currentRegion();
/**
* Returns the current page.
*
* @return the current page.
*/
PageAddress currentPage();
}