]>
git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/thrift/lib/java/src/org/apache/thrift/transport/AutoExpandingBuffer.java
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
19 package org
.apache
.thrift
.transport
;
21 import java
.util
.Arrays
;
24 * Helper class that wraps a byte[] so that it can expand and be reused. Users
25 * should call resizeIfNecessary to make sure the buffer has suitable capacity,
26 * and then use the array as needed. Note that the internal array will grow at a
27 * rate slightly faster than the requested capacity with the (untested)
28 * objective of avoiding expensive buffer allocations and copies.
30 class AutoExpandingBuffer
{
33 public AutoExpandingBuffer(int initialCapacity
) {
34 this.array
= new byte[initialCapacity
];
37 public void resizeIfNecessary(int size
) {
38 final int currentCapacity
= this.array
.length
;
39 if (currentCapacity
< size
) {
40 // Increase by a factor of 1.5x
41 int growCapacity
= currentCapacity
+ (currentCapacity
>> 1);
42 int newCapacity
= Math
.max(growCapacity
, size
);
43 this.array
= Arrays
.copyOf(array
, newCapacity
);
47 public byte[] array() {