1 /**
2 * Copyright 2011 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
21 package org.apache.hadoop.hbase.io.hfile;
22
23 import java.nio.ByteBuffer;
24 import org.apache.hadoop.hbase.io.HeapSize;
25
26 /**
27 * Cacheable is an interface that allows for an object to be cached. If using an
28 * on heap cache, just use heapsize. If using an off heap cache, Cacheable
29 * provides methods for serialization of the object.
30 *
31 * Some objects cannot be moved off heap, those objects will return a
32 * getSerializedLength() of 0.
33 *
34 */
35 public interface Cacheable extends HeapSize {
36 /**
37 * Returns the length of the ByteBuffer required to serialized the object. If the
38 * object cannot be serialized, it should also return 0.
39 *
40 * @return int length in bytes of the serialized form.
41 */
42
43 public int getSerializedLength();
44
45 /**
46 * Serializes its data into destination.
47 */
48 public void serialize(ByteBuffer destination);
49
50 /**
51 * Returns CacheableDeserializer instance which reconstructs original object from ByteBuffer.
52 *
53 * @return CacheableDeserialzer instance.
54 */
55 public CacheableDeserializer<Cacheable> getDeserializer();
56 }