| /*- |
| * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. |
| * |
| * This file was distributed by Oracle as part of a version of Oracle Berkeley |
| * DB Java Edition made available at: |
| * |
| * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html |
| * |
| * Please see the LICENSE file included in the top-level directory of the |
| * appropriate version of Oracle Berkeley DB Java Edition for a copy of the |
| * license and additional information. |
| */ |
| |
| package com.sleepycat.persist; |
| |
| /** |
| * This is package-private to hide it until we implemented unsorted access. |
| * |
| * Implemented to select keys to be returned by an unsorted {@code |
| * ForwardCursor}. |
| * |
| * <p>The reason for implementing a selector, rather than filtering the objects |
| * returned by the {@link ForwardCursor}, is to improve performance when not |
| * all keys are to be processed. Keys are passed to this interface without |
| * retrieving record data or locking, so it is less expensive to return false |
| * from this method than to retrieve the object from the cursor.</p> |
| * |
| * see EntityIndex#unsortedKeys |
| * see EntityIndex#unsortedEntities |
| * |
| * @author Mark Hayes |
| */ |
| interface KeySelector<K> { |
| |
| /** |
| * Returns whether a given key should be returned via the cursor. |
| * |
| * <p>This method should not assume that the given key is for a committed |
| * record or not, nor should it assume that the key will be returned via |
| * the cursor if this method returns true. The record for this key will |
| * not be locked until this method returns. If, when the record is locked, |
| * the record is found to be uncommitted or deleted, the key will not be |
| * returned via the cursor.</p> |
| */ |
| boolean selectKey(K key); |
| } |