]> git.proxmox.com Git - ceph.git/blob - ceph/src/arrow/java/memory/memory-core/src/test/java/org/apache/arrow/memory/DefaultAllocationManagerFactory.java
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / java / memory / memory-core / src / test / java / org / apache / arrow / memory / DefaultAllocationManagerFactory.java
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.arrow.memory;
19
20 import org.apache.arrow.memory.util.MemoryUtil;
21
22 /**
23 * The default Allocation Manager Factory for a module.
24 *
25 * This is only used by tests and contains only a simplistic allocator method.
26 *
27 */
28 public class DefaultAllocationManagerFactory implements AllocationManager.Factory {
29
30 public static final AllocationManager.Factory FACTORY = new DefaultAllocationManagerFactory();
31 private static final ArrowBuf EMPTY = new ArrowBuf(ReferenceManager.NO_OP,
32 null,
33 0,
34 MemoryUtil.UNSAFE.allocateMemory(0));
35
36 @Override
37 public AllocationManager create(BufferAllocator accountingAllocator, long size) {
38 return new AllocationManager(accountingAllocator) {
39 private final long allocatedSize = size;
40 private final long address = MemoryUtil.UNSAFE.allocateMemory(size);
41
42 @Override
43 public long getSize() {
44 return allocatedSize;
45 }
46
47 @Override
48 protected long memoryAddress() {
49 return address;
50 }
51
52 @Override
53 protected void release0() {
54 MemoryUtil.UNSAFE.freeMemory(address);
55 }
56 };
57 }
58
59 @Override
60 public ArrowBuf empty() {
61 return EMPTY;
62 }
63 }