1 /**
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19 package org.apache.hadoop.hbase.regionserver;
20
21 import org.apache.hadoop.hbase.classification.InterfaceAudience;
22
23 /**
24 * Simple wrapper for a byte buffer and a counter. Does not copy.
25 * <p>
26 * NOT thread-safe because it is not used in a multi-threaded context, yet.
27 */
28 @InterfaceAudience.Private
29 public class ColumnCount {
30 private final byte [] bytes;
31 private final int offset;
32 private final int length;
33 private int count;
34
35 /**
36 * Constructor
37 * @param column the qualifier to count the versions for
38 */
39 public ColumnCount(byte [] column) {
40 this(column, 0);
41 }
42
43 /**
44 * Constructor
45 * @param column the qualifier to count the versions for
46 * @param count initial count
47 */
48 public ColumnCount(byte [] column, int count) {
49 this(column, 0, column.length, count);
50 }
51
52 /**
53 * Constuctor
54 * @param column the qualifier to count the versions for
55 * @param offset in the passed buffer where to start the qualifier from
56 * @param length of the qualifier
57 * @param count initial count
58 */
59 public ColumnCount(byte [] column, int offset, int length, int count) {
60 this.bytes = column;
61 this.offset = offset;
62 this.length = length;
63 this.count = count;
64 }
65
66 /**
67 * @return the buffer
68 */
69 public byte [] getBuffer(){
70 return this.bytes;
71 }
72
73 /**
74 * @return the offset
75 */
76 public int getOffset(){
77 return this.offset;
78 }
79
80 /**
81 * @return the length
82 */
83 public int getLength(){
84 return this.length;
85 }
86
87 /**
88 * Decrement the current version count
89 * @return current count
90 */
91 public int decrement() {
92 return --count;
93 }
94
95 /**
96 * Increment the current version count
97 * @return current count
98 */
99 public int increment() {
100 return ++count;
101 }
102
103 /**
104 * Set the current count to a new count
105 * @param count new count to set
106 */
107 public void setCount(int count) {
108 this.count = count;
109 }
110
111 }