<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>import java.nio.ByteBuffer;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.21"></a>
<span class="sourceLineNo">022</span><a name="line.22"></a>
<span class="sourceLineNo">023</span>/**<a name="line.23"></a>
<span class="sourceLineNo">024</span> * This class is a server side extension to the {@link Cell} interface. It is used when the Cell is<a name="line.24"></a>
<span class="sourceLineNo">025</span> * backed by a {@link ByteBuffer}: i.e. &lt;code&gt;cell instanceof ByteBufferedCell&lt;/code&gt;.<a name="line.25"></a>
<span class="sourceLineNo">026</span> * &lt;p&gt;<a name="line.26"></a>
<span class="sourceLineNo">027</span> * This class has getters for the row, column family, column qualifier, value and tags hosting<a name="line.27"></a>
<span class="sourceLineNo">028</span> * ByteBuffers. It also has getters of the *position* within a ByteBuffer where these field bytes<a name="line.28"></a>
<span class="sourceLineNo">029</span> * begin. These are needed because a single ByteBuffer may back one or many Cell instances -- it<a name="line.29"></a>
<span class="sourceLineNo">030</span> * depends on the implementation -- so the ByteBuffer position as returned by<a name="line.30"></a>
<span class="sourceLineNo">031</span> * {@link ByteBuffer#arrayOffset()} cannot be relied upon. Also, do not confuse these position<a name="line.31"></a>
<span class="sourceLineNo">032</span> * methods with the getXXXOffset methods from the super Interface, {@link Cell}; dependent up on<a name="line.32"></a>
<span class="sourceLineNo">033</span> * implementation, the Cell getXXXOffset methods can return the same value as a call to its<a name="line.33"></a>
<span class="sourceLineNo">034</span> * equivalent position method from below BUT they can also stray; if a ByteBufferedCell, use the<a name="line.34"></a>
<span class="sourceLineNo">035</span> * below position methods to find where a field begins.<a name="line.35"></a>
<span class="sourceLineNo">036</span> * &lt;p&gt;<a name="line.36"></a>
<span class="sourceLineNo">037</span> * Use the getXXXLength methods from Cell to find a fields length.<a name="line.37"></a>
<span class="sourceLineNo">038</span> * &lt;p&gt;<a name="line.38"></a>
<span class="sourceLineNo">039</span> * A Cell object can be of this type only on the server side.<a name="line.39"></a>
<span class="sourceLineNo">040</span> * &lt;p&gt;<a name="line.40"></a>
<span class="sourceLineNo">041</span> * WARNING: If a Cell is backed by an offheap ByteBuffer, any call to getXXXArray() will result in a<a name="line.41"></a>
<span class="sourceLineNo">042</span> * temporary byte array creation and a bytes copy. Avoid these allocations by using the appropriate<a name="line.42"></a>
<span class="sourceLineNo">043</span> * Cell access server-side: i.e. ByteBufferedCell when backed by a ByteBuffer and Cell when it is<a name="line.43"></a>
<span class="sourceLineNo">044</span> * not.<a name="line.44"></a>
<span class="sourceLineNo">045</span> */<a name="line.45"></a>
<span class="sourceLineNo">046</span>/*<a name="line.46"></a>
<span class="sourceLineNo">047</span> * Even though all the methods are abstract, ByteBufferExtendedCell is not made to be an interface<a name="line.47"></a>
<span class="sourceLineNo">048</span> * with intent. In CellComparator compare method, we have instance of check to decide whether to use<a name="line.48"></a>
<span class="sourceLineNo">049</span> * getXXXArray() or getXXXByteBuffer(). This is a very hot method in read and write paths. if (left<a name="line.49"></a>
<span class="sourceLineNo">050</span> * instanceof ByteBufferExtendedCell &amp;&amp; right instanceof ByteBufferExtendedCell) { .... } if (left<a name="line.50"></a>
<span class="sourceLineNo">051</span> * instanceof ByteBufferExtendedCell) { .... } if (right instanceof ByteBufferExtendedCell) { .... }<a name="line.51"></a>
<span class="sourceLineNo">052</span> * return Bytes.compareTo(left.getRowArray(), left.getRowOffset(), left.getRowLength(),<a name="line.52"></a>
<span class="sourceLineNo">053</span> * right.getRowArray(), right.getRowOffset(), right.getRowLength()); We did JMH micro benchmark<a name="line.53"></a>
<span class="sourceLineNo">054</span> * tests with both left and right cells as ByteBufferExtendedCell, one only ByteBufferExtendedCell<a name="line.54"></a>
<span class="sourceLineNo">055</span> * and both as Cells. This is compared against JMH results on compare logic with out any instance of<a name="line.55"></a>
<span class="sourceLineNo">056</span> * checks. We noticed that if ByteBufferExtendedCell is an interface, the benchmark result seems to<a name="line.56"></a>
<span class="sourceLineNo">057</span> * be very bad for case of both right and left are Cell only (Not ByteBufferExtendedCell). When<a name="line.57"></a>
<span class="sourceLineNo">058</span> * ByteBufferExtendedCell is an abstract class all 4 possible cases giving almost similar<a name="line.58"></a>
<span class="sourceLineNo">059</span> * performance number compared with compare logic with no instance of checks.<a name="line.59"></a>
<span class="sourceLineNo">060</span> */<a name="line.60"></a>
<span class="sourceLineNo">061</span>@InterfaceAudience.Private<a name="line.61"></a>
<span class="sourceLineNo">062</span>public abstract class ByteBufferExtendedCell implements ExtendedCell {<a name="line.62"></a>
<span class="sourceLineNo">063</span>  /** Returns The {@link ByteBuffer} containing the row bytes. */<a name="line.63"></a>
<span class="sourceLineNo">064</span>  public abstract ByteBuffer getRowByteBuffer();<a name="line.64"></a>
<span class="sourceLineNo">065</span><a name="line.65"></a>
<span class="sourceLineNo">066</span>  /** Returns Position in the {@link ByteBuffer} where row bytes start */<a name="line.66"></a>
<span class="sourceLineNo">067</span>  public abstract int getRowPosition();<a name="line.67"></a>
<span class="sourceLineNo">068</span><a name="line.68"></a>
<span class="sourceLineNo">069</span>  /** Returns The {@link ByteBuffer} containing the column family bytes. */<a name="line.69"></a>
<span class="sourceLineNo">070</span>  public abstract ByteBuffer getFamilyByteBuffer();<a name="line.70"></a>
<span class="sourceLineNo">071</span><a name="line.71"></a>
<span class="sourceLineNo">072</span>  /** Returns Position in the {@link ByteBuffer} where column family bytes start */<a name="line.72"></a>
<span class="sourceLineNo">073</span>  public abstract int getFamilyPosition();<a name="line.73"></a>
<span class="sourceLineNo">074</span><a name="line.74"></a>
<span class="sourceLineNo">075</span>  /** Returns The {@link ByteBuffer} containing the column qualifier bytes. */<a name="line.75"></a>
<span class="sourceLineNo">076</span>  public abstract ByteBuffer getQualifierByteBuffer();<a name="line.76"></a>
<span class="sourceLineNo">077</span><a name="line.77"></a>
<span class="sourceLineNo">078</span>  /** Returns Position in the {@link ByteBuffer} where column qualifier bytes start */<a name="line.78"></a>
<span class="sourceLineNo">079</span>  public abstract int getQualifierPosition();<a name="line.79"></a>
<span class="sourceLineNo">080</span><a name="line.80"></a>
<span class="sourceLineNo">081</span>  /** Returns The {@link ByteBuffer} containing the value bytes. */<a name="line.81"></a>
<span class="sourceLineNo">082</span>  public abstract ByteBuffer getValueByteBuffer();<a name="line.82"></a>
<span class="sourceLineNo">083</span><a name="line.83"></a>
<span class="sourceLineNo">084</span>  /** Returns Position in the {@link ByteBuffer} where value bytes start */<a name="line.84"></a>
<span class="sourceLineNo">085</span>  public abstract int getValuePosition();<a name="line.85"></a>
<span class="sourceLineNo">086</span><a name="line.86"></a>
<span class="sourceLineNo">087</span>  /** Returns The {@link ByteBuffer} containing the tag bytes. */<a name="line.87"></a>
<span class="sourceLineNo">088</span>  public abstract ByteBuffer getTagsByteBuffer();<a name="line.88"></a>
<span class="sourceLineNo">089</span><a name="line.89"></a>
<span class="sourceLineNo">090</span>  /** Returns Position in the {@link ByteBuffer} where tag bytes start */<a name="line.90"></a>
<span class="sourceLineNo">091</span>  public abstract int getTagsPosition();<a name="line.91"></a>
<span class="sourceLineNo">092</span>}<a name="line.92"></a>




























































</pre>
</div>
</body>
</html>
