View Javadoc

1   /**
2    * Copyright 2009 The Apache Software Foundation
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *     http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS,
16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17   * See the License for the specific language governing permissions and
18   * limitations under the License.
19   */
20  package org.apache.hadoop.hbase.io.hfile;
21  
22  import java.nio.ByteBuffer;
23  
24  /**
25   * Block cache interface.
26   * TODO: Add filename or hash of filename to block cache key.
27   */
28  public interface BlockCache {
29    /**
30     * Add block to cache.
31     * @param blockName Zero-based file block number.
32     * @param buf The block contents wrapped in a ByteBuffer.
33     * @param inMemory Whether block should be treated as in-memory
34     */
35    public void cacheBlock(String blockName, ByteBuffer buf, boolean inMemory);
36  
37    /**
38     * Add block to cache (defaults to not in-memory).
39     * @param blockName Zero-based file block number.
40     * @param buf The block contents wrapped in a ByteBuffer.
41     */
42    public void cacheBlock(String blockName, ByteBuffer buf);
43  
44    /**
45     * Fetch block from cache.
46     * @param blockName Block number to fetch.
47     * @param caching Whether this request has caching enabled (used for stats)
48     * @return Block or null if block is not in the cache.
49     */
50    public ByteBuffer getBlock(String blockName, boolean caching);
51  
52    /**
53     * Shutdown the cache.
54     */
55    public void shutdown();
56  }